[jira] Updated: (DERBY-23) just booting jdbc driver and shutting down seem to leak memory

2005-09-20 Thread Knut Anders Hatlen (JIRA)
 [ http://issues.apache.org/jira/browse/DERBY-23?page=all ]

Knut Anders Hatlen updated DERBY-23:


Attachment: DERBY-23-with_comments.diff

Attached patch with comments where appropriate.

 just booting jdbc driver and shutting down seem to leak memory
 --

  Key: DERBY-23
  URL: http://issues.apache.org/jira/browse/DERBY-23
  Project: Derby
 Type: Bug
   Components: Services
 Versions: 10.0.2.0
 Reporter: Tulika Agrawal
 Assignee: Knut Anders Hatlen
 Priority: Minor
  Attachments: DERBY-23-with_comments.diff, DERBY-23.diff, DERBY-23.stat

 Reporting for Daniel John Debrunner.
 Doing simple boot and shutdown of the driver in a loop
 seem to grow the heap forever:
 new org.apache.derby.jdbc.EmbeddedDriver(); //boot the driver
 DriverManager.getConnection(jdbc:derby:;shutdown=true); 
 //shutdown the cloudscape instance completely
 after booting and shutting down 1516 times, memory used is  
 ~~41931056 bytes.
 Sample GC Output:
 1931.93: [Full GC 43484K-43243K(65088K), 0.1779751 secs]
 1933.13: [Full GC 43511K-43270K(65088K), 0.1914383 secs]
 1934.47: [Full GC 43538K-43297K(65088K), 0.1808878 secs]
 1935.68: [Full GC 43564K-43324K(65088K), 0.4461623 secs]
 1937.43: [Full GC 43591K-43350K(65088K), 0.1842980 secs]
 1938.63: [Full GC 43617K-43377K(65088K), 0.1873431 secs]
 1939.85: [Full GC 43644K-43404K(65088K), 0.1948505 secs]
 1941.07: [Full GC 43671K-43430K(65088K), 0.1790895 secs]

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira



[jira] Reopened: (DERBY-504) SELECT DISTINCT returns duplicates when selecting from subselects

2005-09-20 Thread Knut Anders Hatlen (JIRA)
 [ http://issues.apache.org/jira/browse/DERBY-504?page=all ]
 
Knut Anders Hatlen reopened DERBY-504:
--


Reopen the bug so the fix can be included in 10.1.2. Since the bug was reported 
on derby-user before 10.1.1 was released, I think it should be fixed in 10.1.2.

 SELECT DISTINCT returns duplicates when selecting from subselects
 -

  Key: DERBY-504
  URL: http://issues.apache.org/jira/browse/DERBY-504
  Project: Derby
 Type: Bug
   Components: SQL
 Versions: 10.1.2.0
  Environment: Latest development sources (SVN revision 232227), Sun JDK 1.5, 
 Solaris/x86
 Reporter: Knut Anders Hatlen
 Assignee: Knut Anders Hatlen
 Priority: Minor
  Fix For: 10.1.2.0
  Attachments: DERBY-504-10.1-unix.diff, DERBY-504-10.1-windows.diff, 
 DERBY-504-10.1.stat, DERBY-504-cleanup.diff, DERBY-504-cleanup.stat, 
 DERBY-504.diff, DERBY-504.stat, DERBY-504_b.diff, DERBY-504_b.stat, 
 DERBY-504_c-CRLF.diff, DERBY-504_c-CRLF.diff, DERBY-504_c.diff, 
 DERBY-504_c.stat

 When one performs a select distinct on a table generated by a subselect, 
 there sometimes are duplicates in the result. The following example shows the 
 problem:
 ij CREATE TABLE names (id INT PRIMARY KEY, name VARCHAR(10));
 0 rows inserted/updated/deleted
 ij INSERT INTO names (id, name) VALUES
(1, 'Anna'), (2, 'Ben'), (3, 'Carl'),
(4, 'Carl'), (5, 'Ben'), (6, 'Anna');
 6 rows inserted/updated/deleted
 ij SELECT DISTINCT(name) FROM (SELECT name, id FROM names) AS n;
 NAME  
 --
 Anna  
 Ben   
 Carl  
 Carl  
 Ben   
 Anna  
 Six names are returned, although only three names should have been returned.
 When the result is explicitly sorted (using ORDER BY) or the id column is 
 removed from the subselect, the query returns three names as expected:
 ij SELECT DISTINCT(name) FROM (SELECT name, id FROM names) AS n ORDER BY 
 name;
 NAME  
 --
 Anna  
 Ben   
 Carl  
 3 rows selected
 ij SELECT DISTINCT(name) FROM (SELECT name FROM names) AS n;
 NAME  
 --
 Anna  
 Ben   
 Carl  
 3 rows selected

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira



[jira] Updated: (DERBY-504) SELECT DISTINCT returns duplicates when selecting from subselects

2005-09-20 Thread Knut Anders Hatlen (JIRA)
 [ http://issues.apache.org/jira/browse/DERBY-504?page=all ]

Knut Anders Hatlen updated DERBY-504:
-

Fix Version: 10.1.2.0
 (was: 10.2.0.0)
Version: 10.1.2.0
 (was: 10.2.0.0)

Changed fix version.

 SELECT DISTINCT returns duplicates when selecting from subselects
 -

  Key: DERBY-504
  URL: http://issues.apache.org/jira/browse/DERBY-504
  Project: Derby
 Type: Bug
   Components: SQL
 Versions: 10.1.2.0
  Environment: Latest development sources (SVN revision 232227), Sun JDK 1.5, 
 Solaris/x86
 Reporter: Knut Anders Hatlen
 Assignee: Knut Anders Hatlen
 Priority: Minor
  Fix For: 10.1.2.0
  Attachments: DERBY-504-10.1-unix.diff, DERBY-504-10.1-windows.diff, 
 DERBY-504-10.1.stat, DERBY-504-cleanup.diff, DERBY-504-cleanup.stat, 
 DERBY-504.diff, DERBY-504.stat, DERBY-504_b.diff, DERBY-504_b.stat, 
 DERBY-504_c-CRLF.diff, DERBY-504_c-CRLF.diff, DERBY-504_c.diff, 
 DERBY-504_c.stat

 When one performs a select distinct on a table generated by a subselect, 
 there sometimes are duplicates in the result. The following example shows the 
 problem:
 ij CREATE TABLE names (id INT PRIMARY KEY, name VARCHAR(10));
 0 rows inserted/updated/deleted
 ij INSERT INTO names (id, name) VALUES
(1, 'Anna'), (2, 'Ben'), (3, 'Carl'),
(4, 'Carl'), (5, 'Ben'), (6, 'Anna');
 6 rows inserted/updated/deleted
 ij SELECT DISTINCT(name) FROM (SELECT name, id FROM names) AS n;
 NAME  
 --
 Anna  
 Ben   
 Carl  
 Carl  
 Ben   
 Anna  
 Six names are returned, although only three names should have been returned.
 When the result is explicitly sorted (using ORDER BY) or the id column is 
 removed from the subselect, the query returns three names as expected:
 ij SELECT DISTINCT(name) FROM (SELECT name, id FROM names) AS n ORDER BY 
 name;
 NAME  
 --
 Anna  
 Ben   
 Carl  
 3 rows selected
 ij SELECT DISTINCT(name) FROM (SELECT name FROM names) AS n;
 NAME  
 --
 Anna  
 Ben   
 Carl  
 3 rows selected

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira



Re: 10.1.2 Release status page

2005-09-20 Thread Oyvind . Bakksjo

Daniel John Debrunner wrote:

Francois Orsini wrote:



Nightly builds should only be posted if regression tests have passed IMHO.



I disagree, a nightly build is use at your own risk. Even if one test
fails the jar may still work and allow anyone to test other areas.


I think the nightly build should be the build used in the testing 
reported at http://www.multinet.no/~solberg/public/Apache/Derby/index.html/


That way, people can download and use a nightly build at their own risk, 
but they can also see what tests the build has passed/failed.


--
Oyvind Bakksjo
Sun Microsystems, Database Technology Group
Haakon VII gt. 7b, N-7485 Trondheim, Norway
Tel: x43419 / +47 73842119, Fax: +47 73842101


[jira] Commented: (DERBY-577) Test harness should not change the user.dir property , it is meant for infomative purpose only.

2005-09-20 Thread Thomas Lecavelier (JIRA)
[ 
http://issues.apache.org/jira/browse/DERBY-577?page=comments#action_12329982 ] 

Thomas Lecavelier commented on DERBY-577:
-

Hi Suresh,

I follow the references about userDirName, it appears it's build from 
System.getProperties() and I see nowhere userDirName is modified. If you see 
an occurence, could you specify where, please?

Anyway, it seems user.dir is only use to create a tree of nested directories in 
order to perform tests. Maybe it could be remove safely from the jvm argLine 
used for the tests.

 Test  harness should not change the user.dir property , it is meant for 
 infomative purpose only.
 

  Key: DERBY-577
  URL: http://issues.apache.org/jira/browse/DERBY-577
  Project: Derby
 Type: Improvement
   Components: Test
 Reporter: Suresh Thalamati
 Priority: Minor


 If  the  user.dir property is changed ,  you wil  find IO calls are working 
 on different directory than what is returned  by 
 File.getAbsolutePath()   if the file handle is created with a relative path  
 because of JVM issue: 4117557 
 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4117557
 I think  it  is  not good  idea for test harness to change  the user.dir 
 property.It makes hard to debug tests ,  because 
 files  are not created  at  diferent location than  what is returned by 
 getAbsolutePath().Atleast,   I had  fun time figuring out this :-)
 user.dir  is being  changed at the following code segment :
 org.apache.derbyTesting.functionTests.harness. RunTest.java 
  testJvmProps.addElement(user.dir=+userDirName);

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira



[jira] Created: (DERBY-579) Query timeout set for one statement may affect other statements with the same SQL string

2005-09-20 Thread Oyvind Bakksjo (JIRA)
Query timeout set for one statement may affect other statements with the same 
SQL string


 Key: DERBY-579
 URL: http://issues.apache.org/jira/browse/DERBY-579
 Project: Derby
Type: Bug
  Components: SQL  
Reporter: Oyvind Bakksjo
 Assigned to: Oyvind Bakksjo 
Priority: Minor
 Fix For: 10.2.0.0


The timeout is being set on the class GenericPreparedStatement, but this
represents a statement plan and can be shared across multiple
connections (through the statement cache). Thus if two connections
execute the same statement with different timeouts, they will interfere
with each other with the timeout values.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira



Re: [jira] Updated: (DERBY-504) SELECT DISTINCT returns duplicates when selecting from subselects

2005-09-20 Thread Daniel John Debrunner
Knut Anders Hatlen (JIRA) wrote:

  [ http://issues.apache.org/jira/browse/DERBY-504?page=all ]
 
 Knut Anders Hatlen updated DERBY-504:
 -
 
 Fix Version: 10.1.2.0
  (was: 10.2.0.0)
 Version: 10.1.2.0
  (was: 10.2.0.0)
 
 Changed fix version.

Jira allows multiple fix versions, so if this bug was already fixed in
10.2.0.0 that fix version should remain, and 10.1.2.0 added.

Dan.



[jira] Updated: (DERBY-579) Query timeout set for one statement may affect other statements with the same SQL string

2005-09-20 Thread Oyvind Bakksjo (JIRA)
 [ http://issues.apache.org/jira/browse/DERBY-579?page=all ]

Oyvind Bakksjo updated DERBY-579:
-

Attachment: DERBY-579.svn.status

 Query timeout set for one statement may affect other statements with the same 
 SQL string
 

  Key: DERBY-579
  URL: http://issues.apache.org/jira/browse/DERBY-579
  Project: Derby
 Type: Bug
   Components: SQL
 Reporter: Oyvind Bakksjo
 Assignee: Oyvind Bakksjo
 Priority: Minor
  Fix For: 10.2.0.0
  Attachments: DERBY-579.svn.status

 The timeout is being set on the class GenericPreparedStatement, but this
 represents a statement plan and can be shared across multiple
 connections (through the statement cache). Thus if two connections
 execute the same statement with different timeouts, they will interfere
 with each other with the timeout values.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira



[jira] Updated: (DERBY-579) Query timeout set for one statement may affect other statements with the same SQL string

2005-09-20 Thread Oyvind Bakksjo (JIRA)
 [ http://issues.apache.org/jira/browse/DERBY-579?page=all ]

Oyvind Bakksjo updated DERBY-579:
-

Attachment: DERBY-579.svn.diff

This patch fixes the bug as proposed by Dan Debrunner (pass the timeout into 
the execute method of
org.apache.derby.iapi.sql.PreparedStatement, not store it as a field in
GenericPreparedStatement.).

jdbcapi test has been run without errors. Currently running derbyall.

svn diff executed on revision 290453.

 Query timeout set for one statement may affect other statements with the same 
 SQL string
 

  Key: DERBY-579
  URL: http://issues.apache.org/jira/browse/DERBY-579
  Project: Derby
 Type: Bug
   Components: SQL
 Reporter: Oyvind Bakksjo
 Assignee: Oyvind Bakksjo
 Priority: Minor
  Fix For: 10.2.0.0
  Attachments: DERBY-579.svn.diff, DERBY-579.svn.status

 The timeout is being set on the class GenericPreparedStatement, but this
 represents a statement plan and can be shared across multiple
 connections (through the statement cache). Thus if two connections
 execute the same statement with different timeouts, they will interfere
 with each other with the timeout values.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira



[jira] Closed: (DERBY-574) Per JDBC connection timeouts are incorrectly set on org.apache.derby.iapi.sql.PreparedStatement which represents a shared plan.

2005-09-20 Thread Oyvind Bakksjo (JIRA)
 [ http://issues.apache.org/jira/browse/DERBY-574?page=all ]
 
Oyvind Bakksjo closed DERBY-574:


Fix Version: (was: 10.2.0.0)
 Resolution: Duplicate

 Per JDBC connection timeouts are incorrectly set on 
 org.apache.derby.iapi.sql.PreparedStatement which represents a shared plan.
 ---

  Key: DERBY-574
  URL: http://issues.apache.org/jira/browse/DERBY-574
  Project: Derby
 Type: Bug
   Components: JDBC, SQL
 Versions: 10.2.0.0
 Reporter: Daniel John Debrunner


 The timeout is being set on the class GenericPreparedStatement, but this
 represents a statement plan and can be shared across multiple
 connections (through the statement cache). Thus if two connections
 execute the same statement with different timeouts, they will interfere
 with each other with the timeout values.
 I think the solution is to pass the timeout into the execute method of
 org.apache.derby.iapi.sql.PreparedStatement, not store it as a field in
 GenericPreparedStatement.
 [from 
 http://mail-archives.apache.org/mod_mbox/db-derby-dev/200509.mbox/[EMAIL 
 PROTECTED] ]

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira



[jira] Updated: (DERBY-504) SELECT DISTINCT returns duplicates when selecting from subselects

2005-09-20 Thread Knut Anders Hatlen (JIRA)
 [ http://issues.apache.org/jira/browse/DERBY-504?page=all ]

Knut Anders Hatlen updated DERBY-504:
-

Fix Version: 10.2.0.0

 SELECT DISTINCT returns duplicates when selecting from subselects
 -

  Key: DERBY-504
  URL: http://issues.apache.org/jira/browse/DERBY-504
  Project: Derby
 Type: Bug
   Components: SQL
 Versions: 10.1.2.0
  Environment: Latest development sources (SVN revision 232227), Sun JDK 1.5, 
 Solaris/x86
 Reporter: Knut Anders Hatlen
 Assignee: Knut Anders Hatlen
 Priority: Minor
  Fix For: 10.2.0.0, 10.1.2.0
  Attachments: DERBY-504-10.1-unix.diff, DERBY-504-10.1-windows.diff, 
 DERBY-504-10.1.stat, DERBY-504-cleanup.diff, DERBY-504-cleanup.stat, 
 DERBY-504.diff, DERBY-504.stat, DERBY-504_b.diff, DERBY-504_b.stat, 
 DERBY-504_c-CRLF.diff, DERBY-504_c-CRLF.diff, DERBY-504_c.diff, 
 DERBY-504_c.stat

 When one performs a select distinct on a table generated by a subselect, 
 there sometimes are duplicates in the result. The following example shows the 
 problem:
 ij CREATE TABLE names (id INT PRIMARY KEY, name VARCHAR(10));
 0 rows inserted/updated/deleted
 ij INSERT INTO names (id, name) VALUES
(1, 'Anna'), (2, 'Ben'), (3, 'Carl'),
(4, 'Carl'), (5, 'Ben'), (6, 'Anna');
 6 rows inserted/updated/deleted
 ij SELECT DISTINCT(name) FROM (SELECT name, id FROM names) AS n;
 NAME  
 --
 Anna  
 Ben   
 Carl  
 Carl  
 Ben   
 Anna  
 Six names are returned, although only three names should have been returned.
 When the result is explicitly sorted (using ORDER BY) or the id column is 
 removed from the subselect, the query returns three names as expected:
 ij SELECT DISTINCT(name) FROM (SELECT name, id FROM names) AS n ORDER BY 
 name;
 NAME  
 --
 Anna  
 Ben   
 Carl  
 3 rows selected
 ij SELECT DISTINCT(name) FROM (SELECT name FROM names) AS n;
 NAME  
 --
 Anna  
 Ben   
 Carl  
 3 rows selected

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira



[jira] Commented: (DERBY-428) NetworkClient PreparedStatement.executeBatch() hangs if batch is too large (ArrayIndexOutOfBoundsException in Network Server)

2005-09-20 Thread Gregory W. Inns (JIRA)
[ 
http://issues.apache.org/jira/browse/DERBY-428?page=comments#action_12330002 ] 

Gregory W. Inns commented on DERBY-428:
---

We're getting one similar to this one, but only sporadically.

Does anyone know a workaround for it?





 NetworkClient PreparedStatement.executeBatch() hangs if batch is too large 
 (ArrayIndexOutOfBoundsException in Network Server)
 -

  Key: DERBY-428
  URL: http://issues.apache.org/jira/browse/DERBY-428
  Project: Derby
 Type: Bug
   Components: Network Client
  Environment: Linux atum01 2.4.20-31.9 #1 Tue Apr 13 18:04:23 EDT 2004 i686 
 i686 i386 GNU/Linux
 Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_03-b07)
 Java HotSpot(TM) Client VM (build 1.5.0_03-b07, mixed mode, sharing)
 Reporter: Bernt M. Johnsen


 When running
 s.executeUpdate(create table t (i integer));
 PreparedStatement p = c.prepareStatement(insert into t values(?));
 for (int i=0; iN; i++) {
 p.setInt(1,i);
 p.addBatch();
 }
 System.out.println(Ok);
 p.executeBatch();
 If  N is 9000
 The server reports:
 524272
 java.lang.ArrayIndexOutOfBoundsException: 524272
 at org.apache.derby.impl.drda.DDMWriter.startDdm(DDMWriter.java:315)
 at 
 org.apache.derby.impl.drda.DRDAConnThread.writeSQLCARD(DRDAConnThread.java:4937)
 at 
 org.apache.derby.impl.drda.DRDAConnThread.writeSQLCARDs(DRDAConnThread.java:4898)
 at 
 org.apache.derby.impl.drda.DRDAConnThread.writeSQLCARDs(DRDAConnThread.java:4888)
 at 
 org.apache.derby.impl.drda.DRDAConnThread.checkWarning(DRDAConnThread.java:7239)
 at 
 org.apache.derby.impl.drda.DRDAConnThread.parseEXCSQLSTT(DRDAConnThread.java:3605)
 at 
 org.apache.derby.impl.drda.DRDAConnThread.processCommands(DRDAConnThread.java:859)
 at 
 org.apache.derby.impl.drda.DRDAConnThread.run(DRDAConnThread.java:214)
 agentThread[DRDAConnThread_3,5,main]
 While the client hangs in executeBatch().
 If N is 8000, the client gets the following Exception:
 Exception in thread main org.apache.derby.client.am.BatchUpdateException: 
 Non-atomic batch failure.  The batch was submitted, but at least one 
 exception occurred on an individual member of the batch. Use 
 getNextException() to retrieve the exceptions for specific batched elements.
 at 
 org.apache.derby.client.am.Agent.endBatchedReadChain(Agent.java:267)
 at 
 org.apache.derby.client.am.PreparedStatement.executeBatchRequestX(PreparedStatement.java:1596)
 at 
 org.apache.derby.client.am.PreparedStatement.executeBatchX(PreparedStatement.java:1467)
 at 
 org.apache.derby.client.am.PreparedStatement.executeBatch(PreparedStatement.java:945)
 at AOIB.main(AOIB.java:24)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira



Re: [jira] Updated: (DERBY-374) Invalid URL with Derby Client when connecting to Network Server causes protocol exception.

2005-09-20 Thread Deepa Remesh
Kathey, I checked with network server trace on and for the URLs below,
the server does not reach till ACCRDB response to send a RDBAFLRM.

* 'jdbc:derby://localhost:1527/sample:create=true'
* 'jdbc:derby://localhost:1527/C:/myDBs/sample;create=true'

These URLs cause a NullPointerException in the server. The NPE is
caused in Database.makeConnection method at the second line below:

Connection conn =
NetworkServerControlImpl.getDriver().connect(Attribute.PROTOCOL +
dbName + attrString, p);
conn.setAutoCommit(false);

InternalDriver connect method returns null for these URLs because it
does not find a suitable driver. No exception is thrown by
InternalDriver. At the server, Database.makeConnection proceeds to the
next statement conn.SetAutoCommit(false) and it gets a NPE. The root
cause of the problem is in network server. So I will remove my patch
which added checks for malformed URLs in ClientDriver. I am changing
the server to handle such URLs.

Army, the problem you mentioned about use of single quotes will also
be handled by the server after this change.

I am using RDBAFLRM for failure to find a suitable driver. Is this
okay or is there any specific message type that must be used in such a
case?

When looking at this, I found another problem in the translation of
the network URL. The network URL
'jdbc:derby://localhost:1527/C:/myDBs/sample;create=true' gets
translated to the internal URL
'jdbc:derby:C:/myDBs/sample;create=true;create=true'. The create
attribute gets repeated and the database name used at server is
C:/myDBs/sample;create=true. I have not yet looked at this problem.

Thanks,
Deepa


[jira] Commented: (DERBY-573) Provider support for optimizer overrides in Derby.

2005-09-20 Thread Satheesh Bandaram (JIRA)
[ 
http://issues.apache.org/jira/browse/DERBY-573?page=comments#action_12330020 ] 

Satheesh Bandaram commented on DERBY-573:
-

It should be possible to enhance current Derby RunTimeStatistics mechanism to 
display user specified optimizer directives being used if specified. Since 
optimizer directives are typically used by application developer, not the end 
users, it should be easy for them to confirm the directives are taking effect. 
Derby provides several ways to get execution plans... including 
RunTimeStatistics or derby.language.logQueryPlan. These mechanisms can specify 
when optimizer directives are being used.


 Provider support for optimizer overrides in Derby.
 --

  Key: DERBY-573
  URL: http://issues.apache.org/jira/browse/DERBY-573
  Project: Derby
 Type: New Feature
   Components: SQL
 Versions: 10.2.0.0
 Reporter: Mamta A. Satoor
 Assignee: Mamta A. Satoor
  Attachments: optimizeroverrides.html

 Derby's query optimizer usually makes the best choice of join order and 
 access path. The default join strategy ususally works the best too. However, 
 there are some cases in which user may want to override the optimizer or the 
 default values. Providing support for optimizer overrides will allow users to 
 hand-tune the optimizer for queries. 

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira



Re: [jira] Updated: (DERBY-374) Invalid URL with Derby Client when connecting to Network Server causes protocol exception.

2005-09-20 Thread Kathey Marsden
Deepa Remesh wrote:

I am using RDBAFLRM for failure to find a suitable driver. Is this
okay or is there any specific message type that must be used in such a
case?

  

I think that is the best we can do from the server side as we cannot
send a full SQLCARD in this case.
I am not sure what message the client reports when this is returned by
the server. If it does not seem informative enough, we could always add
additional checking to the client to have it made clear and make the
message match the embedded driver.  But I think you are right in taking
the first step of fixing the NPE in the server and returning RDBAFLRM
when the server cannot make a connection.

Kathey






[jira] Commented: (DERBY-573) Provider support for optimizer overrides in Derby.

2005-09-20 Thread Mamta A. Satoor (JIRA)
[ 
http://issues.apache.org/jira/browse/DERBY-573?page=comments#action_12330031 ] 

Mamta A. Satoor commented on DERBY-573:
---

I can look into modifying the RunTimeStatistics to indicate that user overrides 
are being used. Also, I will see how parser can be modified to look for 
--DERBY-HINTS rather than just --PROPERTIES. If people prefer DERBY-PROPERTIES 
over DERBY-HINTS, please put comment stating so to this JIRA entry.

 Provider support for optimizer overrides in Derby.
 --

  Key: DERBY-573
  URL: http://issues.apache.org/jira/browse/DERBY-573
  Project: Derby
 Type: New Feature
   Components: SQL
 Versions: 10.2.0.0
 Reporter: Mamta A. Satoor
 Assignee: Mamta A. Satoor
  Attachments: optimizeroverrides.html

 Derby's query optimizer usually makes the best choice of join order and 
 access path. The default join strategy ususally works the best too. However, 
 there are some cases in which user may want to override the optimizer or the 
 default values. Providing support for optimizer overrides will allow users to 
 hand-tune the optimizer for queries. 

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira



Re: Modular build, was: VOTE: Approach for sharing code

2005-09-20 Thread Rick Hillegas

There are now three cloning proposals for handling shared code:

1) Hand cloning by the developer as is done today.

2) Build-time cloning.

3) Release-time cloning (David's latest proposal).

All of these cloning approaches address Dan's problem case: a client and 
server at diffferent rev levels in the same classpath. It's worth 
pointing out that none of these proposals addresses the other mixed 
usage scenario: wiring into the classpath two applications each of which 
embeds a different version of the server. In that scenario we can still 
expect Heisenbugs. We've never tested this scenario and so we have no 
idea what our current exposure is. I agree with Jeremy that this 
scenario is a systemic defect in Java and that we are not responsible 
for solving it. The best we can do is point our users at best-of-breed 
techniques for containing the problem.


Here's what I think about the cloning proposals:

(1)
+ Requires no changes.
- Brittle, bug-prone.
- Can't cut clone bloat by refactoring jar files.

(2)
+ Simple for bug porting.
- Can't cut clone bloat by refactoring jar files.
- Awkward to code and debug.

(3)
+ Easy to code and debug.
+ Clone bloat not necessary if client and server at same rev level.
- Awkward for bug porting.

In and of themselves, none of these approaches presents the naive 
customer any additional complexity out-of-the-box. Additional complexity 
would vex the customer if, for option (3) we refactored the jar files to 
cut clone bloat. I dislike (3) the least.


Cheers,
-Rick


[jira] Created: (DERBY-581) Modify SQL to skip N rows of the result and return the next M rows

2005-09-20 Thread Craig Russell (JIRA)
Modify SQL to skip N rows of the result and return the next M rows
--

 Key: DERBY-581
 URL: http://issues.apache.org/jira/browse/DERBY-581
 Project: Derby
Type: New Feature
  Components: Unknown  
 Environment: All
Reporter: Craig Russell
Priority: Minor


I agree that the information should be expressed in SQL so that the query 
optimized and execution strategy can know what the user needs in terms of 
cardinality.

I'd also like to ask that when we consider extending the SQL in this manner we 
consider skipping the first N rows and returning the next M rows.

Craig

On Sep 20, 2005, at 10:19 AM, Suavi Ali Demir wrote:

Another little detail about optimization is that Statement.setMaxRows() kind of 
functions on the JDBC side may not be sufficient since it is called after SQL 
statement is prepared and returned as an object (after query plan is built). 
Therefore, it may be necessary to have language syntax to indicate the 
intention to fetch first 1000 rows only, so that when the query is prepared, 
this intention can be taken into account.
Regards,
Ali

Mike Matrigali [EMAIL PROTECTED] wrote:
As craig points out it is important in performance testing to say
exactly what you are measuring. In general Derby will try to
stream rows to the user before it has finished looking at all rows.
So often looking at the first row will and stopping will mean that
many rows have not been processed. BUT when an order by is involved
and the query plan either has no appropriate matching index, or decides
to use a different index then all the rows are processed, then they are
sent to the sorter and finally after all rows are processed they are
streamed to the client.

So as you have seen reading the first 1000 rows of a much larger data
set can happen very quickly.

As subsequent mail threads have pointed out, returning the top 1000
sorted rows is an interesting problem which could be costed and executed
differently if that information was pushed into the optimizer and the
sorter (and medium level projects were done in those areas).


 On Sep 16, 2005, at 4:42 PM, Scott Ogden wrote:
 
 
 
 I have observed some interesting query performance behavior and am
 hoping someone here can explain. 
 
 In my scenario, it appears that an existing index is not being used for
 the 'order by' part of the operation and as a result the perfo rmance of
 certain queries is suffering. Can someone explain if this is supposed
 to be what is happening and why? Please see below for the specific
 queries and their performance characteristics. 
 
 Here are the particulars:
 
 -
 
 create table orders(
 
 order_id varchar(50) NOT NULL
 
 CONSTRAINT ORDERS_PK PRIMARY KEY,
 
 amount numeric(31,2),
 
 time date,
 
 inv_num varchar(50),
 
 line_num varchar(50),
 
 phone varchar(50),
 
 prod_num varchar(50));
  --Load a large amount of data (720,000 records) into the 'orders' table
  
 --Create an index on the time column as that will be used i n the 'where'
 clause.
 
 create index IX_ORDERS_TIME on orders(time);
  
 --When I run a query against this table returning top 1,000 records,
 this query returns very quickly, consistently less than .010 seconds.
 

 select * from orders

 where time  '10/01/2002' and time  '11/30/2002'

 order by time;

 --Now run a similarly query against same table, returning the top
 1,000 records.

 --The difference is that the results are now sorted by the primary key
 ('order_id') rather than 'time'. 

 --This query returns slowly, approximately 15 seconds. Why??

 select * from orders

 where time  '10/01/2002' and time  '11/30/2002'

 order by order_id;

 --Now run a third query against the same 'orders' table, removing the
 where clause

 --This query returns quickly, around .010 seconds. 

 

 select * from orders

 order by order_id;



-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira



[Fwd: Re: additional drda datatypes]

2005-09-20 Thread Rick Hillegas
This issue is moving forward on a geologic time scale. Far enough 
forward that I have been asked: who can champion this issue in other 
(that is, not Sun) companies? Can one of the IBM folks find an IBM 
champion for this issue?


Thanks,
-Rick
---BeginMessage---

Rick,

Rick the working group for the DRDA standard is only operating in maintenance mode at present and we have no plans to initiate new Open Group development work on it. Therefore, while we appreciate your desire to have support for these new datatypes added to the DRDA standard, the Open Group is not currently resourced to do the necessary specification update work. However, if you can gather support within Sun and maybe other organizations sufficient to generate a draft DRDA Addendum Specification for adding support for these 5 ANSI SQL Datatypes, then we would could submit it through our Open Group approval process to approve it as an extension to the DRDA standard.

Regards,
Jim Pickel

Manager, DB2 Connectivity through DRDA
Phone: (408) 463-2332  T/L 543-2332
Internet address: pickel @us.ibm.com
Notes address: James Pickel/Santa Teresa/IBM
VM address: [EMAIL PROTECTED]

Rick Hillegas [EMAIL PROTECTED]








Rick Hillegas [EMAIL PROTECTED] 
08/15/2005 01:53 PM






To
[EMAIL PROTECTED]


cc



Subject
additional drda datatypes








Hello,

The DRDA spec seems to not support a number of ANSI SQL Datatypes, 
including the following:

BOOLEAN
NCHAR
NCLOB
NVARCHAR
XML

How can we go about adding these datatypes to a future revision of the 
DRDA spec?

Thanks,
-Rick





---End Message---


[PATCH] jdk15 canons for 3 tests for 10.0 branch (ref commit # 149488)

2005-09-20 Thread Myrna van Lunteren
Hi,

Attached is a patch that adds 3 jdk15 canons to the DerbyNet dir for the 10.0 branch.
The change is in essence the same as for commit 149488 to the main branch, but
2of the3 tests are a little different, so a backport will be a little awkward.

If someone can add this to the 10.0 branch?

Thx,
Myrna

A  java\testing\org\apache\derbyTesting\functionTests\master\DerbyNet\jdk15
A  
java\testing\org\apache\derbyTesting\functionTests\master\DerbyNet\jdk15\prepStmt.out
A  
java\testing\org\apache\derbyTesting\functionTests\master\DerbyNet\jdk15\callable.out
A  
java\testing\org\apache\derbyTesting\functionTests\master\DerbyNet\jdk15\csPrepStmt.out
Index: 
java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk15/prepStmt.out
===
--- 
java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk15/prepStmt.out
   (revision 0)
+++ 
java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk15/prepStmt.out
   (revision 0)
@@ -0,0 +1,65 @@
+prepStmt Test Starts
+executeUpdate() without parameters
+Update count is: 0
+executeUpdate() with parameters
+Update count is: 1
+execute() with parameters, no result set returned
+Update count is: 2
+executQuery() without parameters
+got row:  99 5 9
+got row:  2 6 10
+got row:  7 5 8
+end of rows
+executQuery() with parameters
+got row:  99 5 9
+got row:  7 5 8
+end of rows
+execute() with parameters with result set returned
+got row:  99 5 9
+got row:  7 5 8
+end of rows
+test different data types for input parameters of a Prepared Statement
+Update count is: 0
+Update count is: 1
+test setObject on different data types for input  parameters of a Prepared 
Statement
+Update count is: 1
+test setNull on different data types for input  parameters of a Prepared 
Statement
+Update count is: 1
+got row:  1 2 3 4.0 5.0 6.0 77.77 8.100 column9stringcolumn10vcstring 
column11lvcstring 0123456789abcdef10111213202020 0123456789abcdef10111213 
0123456789abcdef10111213 xxFILTERED-TIMESTAMPx-04-12 11:44:30.0
+Timestamp match!
+got row:  1 2 3 4.0 5.0 6.0 77.77 8.100 column11string   column10vcstring 
column11lvcstring 0123456789abcdef10111213202020 0123456789abcdef10111213 
0123456789abcdef10111213 xxFILTERED-TIMESTAMPx-04-12 11:44:30.0
+Timestamp match!
+got row:  0 0 0 0.0 0.0 0.0 null null null null null null null null null null 
xxFILTERED-TIMESTAMPx
+After first Timestamp!
+end of rows
+SQLState: 07000 message: At least one parameter to the current statement is 
uninitialized.
+SQLState: 07000 message: At least one parameter to the current statement is 
uninitialized.
+insertTab ( bigtab,50)
+insertTab ( bigtab,200)
+insertTab ( bigtab,300)
+insertTab ( bigtab,500)
+insertTab ( bigtab,1000)
+select * from bigtab
+Col # 500 = null  Col 1000 = null
+Col # 500 = null  Col 1000 = null
+Col # 500 = null  Col 1000 = null
+Col # 500 = 500  Col 1000 = null
+Col # 500 = 500  Col 1000 = 1000
+Insert wrong column name
+insertTab ( bigtab,1001)
+SQLState: 42X14 message: 'C1001' is not a column in table or VTI 'CS.BIGTAB'.
+Expected Syntax error 
+insertTab ( bigtab,0)
+SQLState: 42X01 message: Syntax error: Encountered EOF at line 1, column 
29.
+Expected Table does not exist 
+insertTab ( wrongtab,1000)
+SQLState: 42X05 message: Table 'WRONGTAB' does not exist.
+Minimum BigDecimal Value: 1E-15
+Prepared Statement String: update Numeric_Tab set NULL_VAL=?
+Select NULL_VAL from Numeric_Tab
+Returned BigDecimal Value after Updation: 1E-15
+Value returned from ctssql.stmt: 1E-15
+setObject Method sets the designated parameter with the Object
+Negative test setString with Invalid Timestamp:20
+SQLState: 22007 message: The syntax of the string representation of a datetime 
value is incorrect.
+prepStmt Test Ends

Property changes on: 
java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk15/prepStmt.out
___
Name: svn:eol-style
   + native

Index: 
java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk15/callable.out
===
--- 
java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk15/callable.out
   (revision 0)
+++ 
java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk15/callable.out
   (revision 0)
@@ -0,0 +1,37 @@
+CallableStatement Test Starts
+Sum of 6 and 9 is: 15
+return value: Square of 6 then plus 6 is: 42
+return value is: 55
+return short: 3
+return int: 4
+return long: 5
+return float: 6.0
+return double: 7.0
+return decimal: 88.880
+return date: 2002-05-12
+return time: 10:05:02
+return time stamp: xxFILTERED-TIMESTAMPx
+return byte[0]: 1
+return byte[1]: 2
+method 5 return decimal: 33.3330
+method 5 return decimal: -2.9966
+method 5 return decimal: -966.6669
+method 5 return decimal: 0.
+method 5 return decimal: 

Re: [PATCH] jdk15 canons for 3 tests for 10.0 branch (ref commit # 149488)

2005-09-20 Thread Andrew McIntyre
On 9/20/05, Myrna van Lunteren [EMAIL PROTECTED] wrote:
 Attached is a patch that adds 3 jdk15 canons to the DerbyNet dir for the
 10.0 branch. 

Committed revision 290576.

andrew


[jira] Updated: (DERBY-566) Doc bug for saving ij output to a file

2005-09-20 Thread Andrew McIntyre (JIRA)
 [ http://issues.apache.org/jira/browse/DERBY-566?page=all ]

Andrew McIntyre updated DERBY-566:
--

Fix Version: 10.1.1.1
 (was: 10.1.2.0)
 (was: 10.1.1.0)
Version: 10.1.1.0

 Doc bug for saving ij output to a file
 --

  Key: DERBY-566
  URL: http://issues.apache.org/jira/browse/DERBY-566
  Project: Derby
 Type: Bug
   Components: Documentation
 Versions: 10.1.1.0
 Reporter: Jeff Levitt
 Priority: Minor
  Fix For: 10.2.0.0, 10.1.2.0, 10.1.1.1


 Tracking issue as discussed in:
 http://mail-archives.apache.org/mod_mbox/db-derby-dev/200509.mbox/[EMAIL 
 PROTECTED]
 On the following page:
 http://db.apache.org/derby/docs/dev/tools/ttoolsij98878.html
 this is what needs to change on that page:
  - 2nd bullet on page, 'Redirect standard input to come from a file', the 
 example should be:
 java -Djdbc.drivers=org.apache.derby.jdbc.EmbeddedDriver
 org.apache.derby.tools.ij  *myscript.sql*
 - 5th bullet on page, 'By redirecting to a file', the example should be:
 java -Djdbc.drivers=org.apache.derby.jdbc.EmbeddedDriver
 org.apache.derby.tools.ij *myscript.sql*  *myoutput.txt*

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira



[jira] Updated: (DERBY-566) Doc bug for saving ij output to a file

2005-09-20 Thread Andrew McIntyre (JIRA)
 [ http://issues.apache.org/jira/browse/DERBY-566?page=all ]

Andrew McIntyre updated DERBY-566:
--

Fix Version: 10.2.0.0
 10.1.2.0

 Doc bug for saving ij output to a file
 --

  Key: DERBY-566
  URL: http://issues.apache.org/jira/browse/DERBY-566
  Project: Derby
 Type: Bug
   Components: Documentation
 Versions: 10.1.1.0
 Reporter: Jeff Levitt
 Priority: Minor
  Fix For: 10.2.0.0, 10.1.2.0, 10.1.1.1


 Tracking issue as discussed in:
 http://mail-archives.apache.org/mod_mbox/db-derby-dev/200509.mbox/[EMAIL 
 PROTECTED]
 On the following page:
 http://db.apache.org/derby/docs/dev/tools/ttoolsij98878.html
 this is what needs to change on that page:
  - 2nd bullet on page, 'Redirect standard input to come from a file', the 
 example should be:
 java -Djdbc.drivers=org.apache.derby.jdbc.EmbeddedDriver
 org.apache.derby.tools.ij  *myscript.sql*
 - 5th bullet on page, 'By redirecting to a file', the example should be:
 java -Djdbc.drivers=org.apache.derby.jdbc.EmbeddedDriver
 org.apache.derby.tools.ij *myscript.sql*  *myoutput.txt*

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira



[jira] Commented: (DERBY-149) Server hang when invalid string is bound to datetime columns.

2005-09-20 Thread Kathey Marsden (JIRA)
[ 
http://issues.apache.org/jira/browse/DERBY-149?page=comments#action_12330055 ] 

Kathey Marsden commented on DERBY-149:
--

Looking at this problem, I see that other types of errors, such as insert of a 
null value into a not null column seem to work ok. Looking at two types of 
errors in the trace,  I see the following.

SUCCESSFUL ERROR PROCESSING (invalid insert of null value. handled ok)
[derby]SEND BUFFER: EXCSQLSTT 
[derby]SEND BUFFER: SQLDTA   
[derby]SEND BUFFER: RDBCMM  
[derby]RECEIVE BUFFER: SQLCARD (With error 23502)
[derby]RECEIVE BUFFER: ENDUOWRM  
[derby]RECEIVE BUFFER: SQLCARD   (null SQLCARD)


PROBLEM  ERROR PROCESSING (invalid conversion)

[derby]SEND BUFFER: EXCSQLSTT  
[derby]SEND BUFFER: SQLDTA   
[derby]SEND BUFFER: RDBCMM  
[derby]RECEIVE BUFFER: SQLCARD (Exception 22007)

In the  problem  case, the server never sends the ENDUOWRM and SQLCARD that it 
should. The client blocks waiting for a response to its chained RDBCMM which 
the server never sent.

In the server, in parseSQLDTA on exception, we call skipRemainder(false) to 
skip the rest of the DSS. The false parameter  means it will skip DSS's even if 
they have a different correlation id, which means in this case it gets a little 
too skippy and skips the RDBCMM Command.

Changing the line to skipRemainder(true) fixes the problem and makes sense to 
me because the DRDA manual seems to indicate that you should only get a new 
correlation identifier for a new command (page 76).   

My specific question (at last)  is this:

Are there any situations where we might need to skip a DSS with a different 
correlation ID  when parsing the parameters in parseSQLDTA?  


 Server hang when invalid string is bound to datetime columns.
 -

  Key: DERBY-149
  URL: http://issues.apache.org/jira/browse/DERBY-149
  Project: Derby
 Type: Bug
   Components: Network Server
  Environment: Derby running with Network Server via JDBC universal driver.
 Reporter: A B
 Assignee: Kathey Marsden


 When running against Derby Network Server with the JCC driver, attempts to 
 bind an invalid date/time string to a date/time/timestamp parameter lead to a 
 hang in either the JCC client or in the Network Server (not sure which).
 The problem does NOT occur if the same thing is run against a DB2 server, 
 which suggests the bug is in Network Server, not in the JCC driver.  That 
 said, though, the problem also does NOT happen if one uses an ODBC client to 
 connect to Network Server, instead of a JDBC client--so perhaps it's a 
 problem with JCC, after all...hard to say one way or the other...
 Here's a simple program to reproduce the problem:
 import java.sql.*;
 public class go {
   public static void main (String[] args) throws Exception {
   Class.forName(com.ibm.db2.jcc.DB2Driver);
   Connection c = DriverManager.getConnection(
   jdbc:derby:net://localhost:1527/ugh;create=true, 
 bah, humbug);
   Statement s = c.createStatement();
   try {
   s.execute(drop table dt);
   } catch (SQLException se) {}
   s.execute(create table dt (d date));
   PreparedStatement pSt = c.prepareStatement(insert into dt 
 values (?));
   try {
   pSt.setString(1, oops); // invalid date value.
   pSt.execute();
   } catch (SQLException se) {
   System.out.println(Got  + se.getSQLState() + :  + 
 se.getMessage());
   }
   }
 }
 Of course, in order for the program to run, one must start the Network Server 
 on port 1527 first.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira



Re: 10.1.2 Release status page

2005-09-20 Thread Daniel John Debrunner
Andrew McIntyre wrote:

 
 Hmm, this would be my fault. The version should have been bumped after
 each release and I neglected to do that immediately after the last
 release. Also, I merged the issues with 10.1.1.1 FixIns to 10.1.2.0.
 While that was a probably a good idea, in order to target more bugs at
 the 10.1.2.0, it looks like removing the 10.1.1.1 release from JIRA
 might have been a mistake as well, since we can't mark bugs as fixed
 in 10.1.1.1.
 
 I'll bump the branch to 10.1.1.1, in preparation for posting the
 snapshot, after which I'll bump it to 10.1.1.2. If we get to 10.1.2.0
 without posting another snapshot, we can merge anything with a
 10.1.1.2 FixIn to 10.1.2.0.
 
 Sound good?

What do you mean by merge in this case?

I would say that if the version of the 10.1 branch is 10.1.1.1 then a
fix should result in the bug being marked as fixed in '10.1.1.1
(unreleased version)'. Ie. correctly represent the version of when the
bug was fixed.

Once 10.1.2 is released (or maybe a release candidate) then any bugs
fixed in 10.1 since the last release could *also* be marked fixed in
'10.1.2 (released version)', not replace the fixin of 10.1.1.1. This
additional fixin is to link the bugs with the release and helps the
release notes generation.

Changing history of a bug tracking system is generally a thing to avoid.

Dan.



[jira] Updated: (DERBY-562) Derby incorrectly throws Exception when streaming to BLOB field

2005-09-20 Thread Sunitha Kambhampati (JIRA)
 [ http://issues.apache.org/jira/browse/DERBY-562?page=all ]

Sunitha Kambhampati updated DERBY-562:
--

Attachment: Derby562.stat.txt

 Derby incorrectly throws Exception when streaming to BLOB field
 ---

  Key: DERBY-562
  URL: http://issues.apache.org/jira/browse/DERBY-562
  Project: Derby
 Type: Bug
 Versions: 10.1.1.0
 Reporter: Holger Rehn
  Attachments: Derby562.diff.txt, Derby562.stat.txt

 Derby incorrectly throws an Exception when streaming to a BLOB in case the 
 used InputStream actually could provide more data than I want to write to the 
 BLOB field.
PreparedStatement statement = connection.prepareStatement( insert into 
 FOO(ID,DATA) values(?, ?) );
statement.setLong( 1, someValue );
statement.setBinaryStream( 2, someInputStream, amountOfData ); // 
 amountOfData  amount of data readable from someInputStream
statement.executeUpdate();
 executeUpdate() throws an SQLException with detail message: Input stream 
 held less data than requested length.: java.io.IOException
 In my case this was first caused by writing an internal buffer (byte[]) to 
 the data base through a ByteArrayInputStream while not limiting the 
 ByteArrayInputStream to the useful data within the buffer but setting 
 amountOfData to the number of useful bytes. So the 2 problems are:
 1. the error text is definitly incorrect since I provide more data than 
 neccessary, not less
 2. in my opinion this shouldn't throw an exception at all (I checked against 
 4 other DBMS, all of them worked as intended)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira



Re: Modular build, was: VOTE: Approach for sharing code

2005-09-20 Thread David W. Van Couvering

David W. Van Couvering wrote:
This proposal was based on the assumption that our common code would 
*never* be exposed to the outside world.


I also never claimed that we should apply this solution to third-party 
components.  That's a fish I don't think we need to fry right now.




Although I do want to remind us all that, based on Dan's email a while 
back, the JDK itself encountered the mixed version problem and solved/is 
solving it through package renaming...


http://mail-archives.apache.org/mod_mbox/db-derby-dev/200509.mbox/[EMAIL 
PROTECTED]

The future plan is to rename the org.apache.** packages to be something
like com.sun.org.apache.** to fix this problem.
begin:vcard
fn:David W Van Couvering
n:Van Couvering;David W
org:Sun Microsystems, Inc.;Database Technology Group
email;internet:[EMAIL PROTECTED]
title:Senior Staff Software Engineer
tel;work:510-550-6819
tel;cell:510-684-7281
x-mozilla-html:TRUE
version:2.1
end:vcard



Re: Modular build, was: VOTE: Approach for sharing code

2005-09-20 Thread Jeremy Boynes

Daniel John Debrunner wrote:

Jeremy Boynes wrote:



Think of the carnage if it was java_14208_b13.sql_300.Connection



It's actually instructive to look how Java solves this:

- The interface is kept upwards compatible, by following rules such as
only new methods/fields etc.

Then to look at how a consumer, Derby, deals with the fact of multiple
versions of the interface:

- Derby only provides and uses the functionality to match the version of
the interface (java.sql.Connection) loaded, determined at runtime.

I'd thought this was a workable direction being proposed about six
thousand message ago, upwards compatible apis and the ability for a
consumer to handle a lower version. Not sure what derailed it.



Kathey asked if I would be willing to write something up and I started 
thinking about it but haven't had the bandwidth to write anything.


As a quick braindump:
* there are rules that restrict changes to the interface going forward
* Sun (et al) stick to those rules even when it is painful
* no class/method is removed without being deprecated first
* the JVM supports version skew a little by not requiring an
  implementation to implement all methods in a interface (at runtime)
* the interfaces often provide a mechanism to determine what features of
  an API the implementation implements
* frameworks can utilize multiple classloaders to load multiple versions
  of a class into the VM - tools have developed to simplify this

I think we can support a scenario where:
* a comsumer expecting version X.Y will work with any implementation
  X.Y' when Y' = Y
* a consumer expecting X.Y will work with X.Y' when Y'  Y by version
  detection and degraded functionality (Y' level). If Y level function
  is required then it will gracefully die (able to detect rather
  than AbstractMethodError)
* X.Y defines the interface version, i.e. X.Y.Z works with X.Y.Z' for
  all Z'
* X defines the compatibility level i.e. X and X' are not guaranteed
  to work together (although we will try to ensure they do)

Basic rules:
* at the Z level, no API change is allowed, just implementation changes
* at the Y level, additive API changes are allowed but must be
  accompanied by support in the versioning mechanism so that they can be
  detected. Things can be deprecated
* at the Z level, incompatible changes are allowed. Items deprecated in
  version X can be removed in version X+2 (implicitly (X+2).0.0).

This all applies to operation in a single classloader. Where multiple 
classloaders are involved (inside one VM or in multiple VMs) a different 
set of versioning behaviours applies to the wire protocol.


--
Jeremy


Re: Modular build, was: VOTE: Approach for sharing code

2005-09-20 Thread David W. Van Couvering
Thanks for writing up a proposed solution, I was getting a little tired 
of putting up targets for others to shoot down.


I agree with this wholeheartedly this was what I have wanted to do 
(although perhaps not as well communicated and there are some details 
here that are new and which seem really good/interesting).


You say Java does this -- is this documented somewhere? I'd love to have 
that as a reference.


First of all, Kathey was concerned we wouldn't be able to follow this 
kind of discipline.


http://mail-archives.apache.org/mod_mbox/db-derby-dev/200509.mbox/[EMAIL 
PROTECTED]

But I'll also show where I saw this get tripped up:

 * a consumer expecting X.Y will work with X.Y' when Y'  Y by version
   detection and degraded functionality (Y' level). If Y level function
   is required then it will gracefully die (able to detect rather
   than AbstractMethodError)


In my original proposal:

   * compatibility will be strongly encouraged but not guaranteed
 against previous minor versions (e.g. a 10.2 consumer works
 with 10.1 common classes, but a 10.3 consumer has a hard
 dependency on new methods, it can not work with 10.2
 common classes).

Perhaps I remember incorrectly, but I remember us (or enough of us) 
generally agreeing that gracefully dying when Y level function was 
required was not acceptable, as this was a regression of existing 
behavior.  This was the nail in the coffin for my original proposal.


http://mail-archives.apache.org/mod_mbox/db-derby-dev/200509.mbox/[EMAIL 
PROTECTED]
http://mail-archives.apache.org/mod_mbox/db-derby-dev/200509.mbox/[EMAIL 
PROTECTED]

Unless you can address these issues I think we're back at square one...

David

Further asides below:


As a quick braindump:
* there are rules that restrict changes to the interface going forward
* Sun (et al) stick to those rules even when it is painful
* no class/method is removed without being deprecated first
* the JVM supports version skew a little by not requiring an
  implementation to implement all methods in a interface (at runtime)


That's nice to know, I didn't know that


* the interfaces often provide a mechanism to determine what features of
  an API the implementation implements
* frameworks can utilize multiple classloaders to load multiple versions
  of a class into the VM - tools have developed to simplify this



I don't know much about such frameworks and tools, but I don't think 
this solves Dan's problem of accidentally loading multiple versions.



I think we can support a scenario where:
* a comsumer expecting version X.Y will work with any implementation
  X.Y' when Y' = Y





* X.Y defines the interface version, i.e. X.Y.Z works with X.Y.Z' for
  all Z'
* X defines the compatibility level i.e. X and X' are not guaranteed
  to work together (although we will try to ensure they do)

Basic rules:
* at the Z level, no API change is allowed, just implementation changes
* at the Y level, additive API changes are allowed but must be
  accompanied by support in the versioning mechanism so that they can be
  detected. Things can be deprecated
* at the Z level, incompatible changes are allowed. Items deprecated in
  version X can be removed in version X+2 (implicitly (X+2).0.0).

This all applies to operation in a single classloader. Where multiple 
classloaders are involved (inside one VM or in multiple VMs) a different 
set of versioning behaviours applies to the wire protocol.


--
Jeremy
begin:vcard
fn:David W Van Couvering
n:Van Couvering;David W
org:Sun Microsystems, Inc.;Database Technology Group
email;internet:[EMAIL PROTECTED]
title:Senior Staff Software Engineer
tel;work:510-550-6819
tel;cell:510-684-7281
x-mozilla-html:TRUE
version:2.1
end:vcard