You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by Bryan Pendleton <bp...@amberpoint.com> on 2005/11/27 01:22:35 UTC

Possible new DRDA bug -- can you reproduce?

While trying to test my fixes for DERBY-614, I think I may have
stumbled into an entirely unrelated DRDA protocol bug of some
sort. I've backed out my changes for DERBY-614 and I still see
this problem, so I don't think I've caused it; however, I might
have blown it. :)

Below are the steps to reproduce this problem; I'd
appreciate it if somebody could have a look and see if they can
observe the same problem on their system.

thanks,

bryan

1) Add the following code to
java\testing\org\apache\derbyTesting\functionTests\util\ProcedureTest.java
This code adds a new data-loading feature to the bigTestData() method.

Index: java/testing/org/apache/derbyTesting/functionTests/util/ProcedureTest.java
===================================================================
--- java/testing/org/apache/derbyTesting/functionTests/util/ProcedureTest.java(revision 348831)
+++ java/testing/org/apache/derbyTesting/functionTests/util/ProcedureTest.java(working copy)
@@ -214,6 +214,13 @@
                                 ps.executeUpdate();
                                 ps.close();
                                 break;
+                       case 9:
+                               String lStringA32672 = new String(Formatters.repeatChar("a",32672));
+                               String lStringB32672 = new String(Formatters.repeatChar("b",32672));
+                               String lStringC32672 = new String(Formatters.repeatChar("c",32672));
+                               String lStringD32672 = new String(Formatters.repeatChar("d",32672));
+                               insertInBig(conn, lStringA32672, lStringB32672,lStringC32672, lStringD32672);
+                               break;
                 }
                 conn.close();
         }

2) Start up the network server and create a database called 'testBig'.
3) Connect with IJ, being sure that
    a) db2jcc.jar and db2jcc_license_c.jar are in your path
    b) you are authenticated (-Dij.user=APP -Dij.password=APP
       in the simple case)
4) Run the following small script:

driver 'com.ibm.db2.jcc.DB2Driver';
connect 'jdbc:derby:net://localhost:1527/testBig';
create procedure INSERTDATA1(IN a int) language java parameter style java
external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.bigTestData';
prepare p1 as 'call INSERTDATA1(?)';
drop table big;
-- Mix clob and varchar in the table.
create table big(c1 clob(32672), c2 varchar(32672), c3 varchar(32672), c4 clob(32672));
execute p1 using 'values 9';
execute p1 using 'values 9';
execute p1 using 'values 9';
get scroll insensitive cursor c1 as 'select * from big';
first c1;
quit;

In my case, what happens is that I get the following DRDAProtocolException:

org.apache.derby.impl.drda.DRDAProtocolException
         at org.apache.derby.impl.drda.DRDAConnThread.throwSyntaxrm(DRDAConnThread.java:406)
         at org.apache.derby.impl.drda.DRDAConnThread.invalidValue(DRDAConnThread.java:6783)
         at org.apache.derby.impl.drda.DRDAConnThread.parseEXCSQLSTT(DRDAConnThread.java:3506)
         at org.apache.derby.impl.drda.DRDAConnThread.processCommands(DRDAConnThread.java:868)
         at org.apache.derby.impl.drda.DRDAConnThread.run(DRDAConnThread.java:219)

According to the server-side traces, the server is choking on
the following EXCSQLSTT request from the client:

        (2005.11.26 14:17:19) Request fill DRDAConnThread_9 5

        RECEIVE BUFFER: EXCSQLSTT           (ASCII)           (EBCDIC)
        0 1 2 3 4 5 6 7   8 9 A B C D E F   0123456789ABCDEF  0123456789ABCDEF
0000   0058D05100010052  200B00442113A385  .X.Q...R ..D!...  ..}...........te
0010   A2A3C28987404040  4040404040404040  .....@@@@@@@@@@@  stBig
0020   D5E4D3D3C9C44040  4040404040404040  ......@@@@@@@@@@  NULLID
0030   4040E2E8E2E2E3C1  E340404040404040  @@.......@@@@@@@    SYSSTAT
0040   404040405359534C  564C303100070005  @@@@SYSLVL01....      ...<.<......
0050   2105F100052111F1  0024D0030001001E  !....!...$......  ..1....1..}.....
0060   2412001000100676  D01B00040671E4D0  $......v.....q..  ........}.....U}
0070   0001000A147A0000  00008000          .....z......      .....:......


        (2005.11.26 14:17:31) Reply flush DRDAConnThread_9 5

        SEND BUFFER: SYNTAXRM               (ASCII)           (EBCDIC)
        0 1 2 3 4 5 6 7   8 9 A B C D E F   0123456789ABCDEF  0123456789ABCDEF
0000   001BD00200010015  124C000611490008  .........L...I..  ..}......<......
0010   0006000C21130005  114A14            ....!....J.       ...........