Describe TenTenOneBuddyTesting here. Objective: Facilitate evaluation of the new features added to 10.10.

'Buddy Testing', wherein contributors test Derby 10.10 features added by other members. Each contributor is encouraged to signup for testing and providing feedback on multiple features. A single feature can also have multiple buddy testers, the more the better.

The test scenarios could be, functionality testing, integration testing, stress/load testing etc. using the newly added features in 10.10. Tests should include documentation review, both javadoc and user documentation where applicable. It would be great if any (junit) test written could be contributed back to Derby so that others can run and expand them.

Please add more chapters for each new feature buddy tested.

New feature in 10.10

New Feature

Link to JIRA entries

Buddy tester

Documentation Available


JDBC 4.2




see below per JDBC class

BatchUpdateException changes

Checked implementation and used debugger to test execution of creation and use of getLargeUpdateCounts.

- ClientJDBCObjectFactoryImpl42#newBatchUpdateException ( String

- ditto in ClientJDBCObjectFactoryImpl#newBatchUpdateException (

- in Util#newBatchUpdateException,

- is the necessary "degrade cascade" in

CallableStatement changes

- In methods in CallableStatement42 (and lower), why typically use the try block here, as here:

- Checked implementation and used debugger to test execution of creation and

- but why do we need to implement this at all now that the interface has

- DERBY-6088 and DERBY-6089


- Checked implementation and used debugger to test execution of


- According to the new Javadoc, #acceptsURL and #connect should throw !SQLException on null URL: Both EmbeddedDriver and ClientDriver throw NullPointerException instead.


In PreparedStatementTest, the array ILLEGAL_JDBC_TYPES seems to miss some types we do not support (from the types in JDBCType):

Should these be added to make sure we react properly if these are attempted used? (NULL is a value, not a type, but still defined in JDBCType..)


I would like to see negative tests for the new overloads of updateObjects too, with respect to the targetSqlType.


The javadoc here now specifies that this should be throw if the value given by DriverManager.setLoginTimeout is exceeded. I can't find a test for this (see my comment on DERBY-2026); and I also could not find any code on the client that catches a timeout on the login connection socket to convert an SocketTimeoutException to this error.

See also DERBY-6094 Derby ignores DriverManager.setLoginTimeout().

Buddy testing completed 2013-02-27 dag

New feature in 10.10

New Feature

Link to JIRA entries

Buddy tester

Documentation Available






see below

Buddy testing/review of user defined aggregates feature

* Currently, our docs say:

  "An unqualified UDA name may not be the name of an aggregate defined in part 2 of the SQL Standard, section 10.9:


  ij> create derby aggregate app.ANY for int returns int external name 'foo.Agg';
  ERROR 42X01: Syntax error: Encountered "ANY" at line 1, column 28.

  ij> create derby aggregate app."ANY" for int returns int external name 'foo.Agg';
  0 rows inserted/updated/deleted


  "In general, UDAs live in the same namespace as one-argument user-defined functions (see CREATE FUNCTION statement)."

  ij> create function app."ANY" (i int) returns int parameter style java language java external name '';

  ERROR X0Y87: There is already an aggregate or function with one argument whose name is 'APP'.'ANY'.

  ij> show functions in app;
  FUNCTION_SCHEM|FUNCTION_NAME               |REMARKS                            
  0 rows selected

* checked simple int aggregator: found agg class could not be static nested class in another(?)

  "The !ClassNameString is a single-quoted string. It is the full name of a Java class which implements the org.apache.derby.agg.Aggregator interface."

* checked USAGE privilege +/- via both user and role privilege grants: OK

* The merge method wasn't used in my simple example. When is it used?

* In the GRANT-statement refman page, we are inconsisten when it comes to explaining

      GRANT USAGE ON DERBY AGGREGATE [ schemaName. ] SQL92Identifier TO grantees

      GRANT EXECUTE ON { FUNCTION | PROCEDURE } routine-designator TO grantees

      routine-designator { function-name | procedure-name }  

TenTenOneBuddyTesting (last edited 2013-03-21 04:28:31 by inet-rmmc09-o)