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/12/04 01:52:59 UTC

Can somebody try to reproduce this problem for me, please?

Can somebody who has a reasonably current source tree please
try to reproduce this problem for me and tell me if they
can replicate my results?

thanks,

bryan


-------- Original Message --------
Subject: Possible new DRDA bug -- can you reproduce?
Date: Sat, 26 Nov 2005 16:22:35 -0800
From: Bryan Pendleton <bp...@amberpoint.com>

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.       ...........




Re: Can somebody try to reproduce this problem for me, please?

Posted by Bryan Pendleton <bp...@amberpoint.com>.
Rajesh Kartha wrote:
> I was able to reproduce this issue with the DB2 JCC Driver (version  2.6 
> - (90) ).  

Hi Rajesh,

Thank you very much for confirming this for me. I opened JIRA bug 745
to track this problem, and I will attach your simpler test case to it
as well.

thanks,

bryan




Re: Can somebody try to reproduce this problem for me, please?

Posted by Rajesh Kartha <ka...@Source-Zone.Org>.
Hi Bryan

I was able to reproduce this issue with the DB2 JCC Driver (version  2.6 
- (90) ).  With the
derbyclient it *just worked fine*.

The issue seems to be with the JCC  driver and large columns(?),  the 
exception is thrown
even with one row in the 'big' table.

Here is simpler repro:

connect 
'jdbc:derby:net://localhost:1527/testjccdb;create=true:user=app;password=app;';
create table big(c1 clob(32672), c2 varchar(32672), c3 varchar(32672), 
c4 clob(32672));
insert into big values ('AAA','BBB','CCC','DDD');
select * from big;
get scroll insensitive cursor c1 as 'select * from big';
first c1;


Using JCC:
-------------
ij> connect 
'jdbc:derby:net://localhost:1527/testjccdb;create=true:user=app;pass
word=app;';
ij> create table big(c1 clob(32672), c2 varchar(32672), c3 
varchar(32672), c4 cl
ob(32672));
0 rows inserted/updated/deleted
ij> insert into big values ('AAA','BBB','CCC','DDD');
1 row inserted/updated/deleted
ij> select * from big;
C1
                                                |C2

                 |C3
                                                                  |C4


--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-----------------------------------
AAA
                                                |BBB

                 |CCC
                                                                  |DDD



1 row selected
ij> get scroll insensitive cursor c1 as 'select * from big';
ij> first c1;
C1
                                                |C2

                 |C3
                                                                  |C4


--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-----------------------------------
ERROR 58009: Execution failed due to a distribution protocol error that 
caused d
eallocation of the conversation.  A DRDA Data Stream Syntax Error was 
detected.
 Reason: 0x2113  DB2ConnectionCorrelator: NF000001.GC42.01080D60D44C

Using DerbyClient:
-------------
ij> connect 'jdbc:derby://localhost:1527/testclientdb;create=true';
ij> create table big(c1 clob(32672), c2 varchar(32672), c3 
varchar(32672), c4 cl
ob(32672));
0 rows inserted/updated/deleted
ij> insert into big values ('AAA','BBB','CCC','DDD');
1 row inserted/updated/deleted
ij> select * from big;
C1
                                                |C2

                 |C3
                                                                  |C4


--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-----------------------------------
AAA
                                                |BBB

                 |CCC
                                                                  |DDD



1 row selected
ij> get scroll insensitive cursor c1 as 'select * from big';
ij> first c1;
C1
                                                |C2

                 |C3
                                                                  |C4


--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-----------------------------------

                                                |BBB

                 |CCC
                                                                  |
======================================================================

-Rajesh

Bryan Pendleton wrote:

> Can somebody who has a reasonably current source tree please
> try to reproduce this problem for me and tell me if they
> can replicate my results?
>
> thanks,
>
> bryan
>
>
> -------- Original Message --------
> Subject: Possible new DRDA bug -- can you reproduce?
> Date: Sat, 26 Nov 2005 16:22:35 -0800
> From: Bryan Pendleton <bp...@amberpoint.com>
>
> 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.       ...........
>
>
>