You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by da...@apache.org on 2006/03/15 22:31:59 UTC

svn commit: r386169 [3/36] - in /db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master: DerbyNet/jdk16/ DerbyNetClient/jdk16/ jdk16/

Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk16/blobclob4BLOB.out
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk16/blobclob4BLOB.out?rev=386169&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk16/blobclob4BLOB.out (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk16/blobclob4BLOB.out Wed Mar 15 13:31:53 2006
@@ -0,0 +1,771 @@
+Test blobclob starting
+START: prepareCLOBMAIN
+===> inserting short.txt length = 56
+===> inserting littleclob.txt length = 10000
+===> inserting empty.txt length = 0
+===> inserting searchclob.txt length = 5000
+===> inserting aclob.txt length = 300000
+START: prepareSearchClobTable
+===> inserting short.txt length = 56
+===> inserting littleclob.txt length = 10000
+===> inserting empty.txt length = 0
+===> inserting searchclob.txt length = 5000
+===> inserting aclob.txt length = 300000
+prepareSearchClobTable finished
+START: prepareUnicodeTable
+START: prepareUnicodeFile
+unicode string 0 correct
+unicode string 1 correct
+unicode string 2 correct
+Finished prepareUnicodeFile
+START: setCharacterStreamTest
+Length of clob is 5009
+unicode string 0 matched
+unicode string 1 matched
+unicode string 2 matched
+EOF matched
+setCharacterStreamTest finished
+START: clobTest0
+clobTest0 finished
+START: clobTest1
+clobTest11 finished
+START: clobTest12
+Succeeded to match, row 1
+PASSED, row 1, length was 3
+Succeeded to match, row 2
+PASSED, row 2, length was 3
+Succeeded to match, row 3
+PASSED, row 3, length was 3
+Succeeded to match, row 4
+PASSED, row 4, length was 5016
+Succeeded to match, row 5
+PASSED, row 5, length was 5016
+Succeeded to match, row 6
+PASSED, row 6, length was 5016
+clobTest12 finished
+START: clobTest2
+CLOB getSubString 9905 > 0
+EXPECTED Out of bounds exception
+CLOB getSubString 5910 > 0
+EXPECTED Out of bounds exception
+CLOB getSubString 5910 > 0
+EXPECTED Out of bounds exception
+CLOB getSubString 204 > 0
+EXPECTED Out of bounds exception
+CLOB getSubString 68 > 0
+EXPECTED Out of bounds exception
+CLOB getSubString 1 > 0
+1(5) (len 50) 
+CLOB FAIL - NO ERROR ON getSubString POS TOO LARGE 1 > 0
+CLOB getSubString 1 > 0
+1(6) (len 1) 
+CLOB FAIL - NO ERROR ON getSubString POS TOO LARGE 1 > 0
+CLOB getSubString 9905 > 65
+EXPECTED Out of bounds exception
+CLOB getSubString 5910 > 65
+EXPECTED Out of bounds exception
+CLOB getSubString 5910 > 65
+EXPECTED Out of bounds exception
+CLOB getSubString 204 > 65
+EXPECTED Out of bounds exception
+CLOB getSubString 68 > 65
+EXPECTED Out of bounds exception
+2(5) (len 50) you can lead a horse to water but you can't form i
+2(6) (len 1) y
+CLOB getSubString 9905 > 26
+EXPECTED Out of bounds exception
+CLOB getSubString 5910 > 26
+EXPECTED Out of bounds exception
+CLOB getSubString 5910 > 26
+EXPECTED Out of bounds exception
+CLOB getSubString 204 > 26
+EXPECTED Out of bounds exception
+CLOB getSubString 68 > 26
+EXPECTED Out of bounds exception
+3(5) (len 50) a stitch in time says ouch
+3(6) (len 1) a
+CLOB getSubString 9905 > 42
+EXPECTED Out of bounds exception
+CLOB getSubString 5910 > 42
+EXPECTED Out of bounds exception
+CLOB getSubString 5910 > 42
+EXPECTED Out of bounds exception
+CLOB getSubString 204 > 42
+EXPECTED Out of bounds exception
+CLOB getSubString 68 > 42
+EXPECTED Out of bounds exception
+4(5) (len 50) here is a string with a return 
+ character
+4(6) (len 1) h
+CLOB getSubString 9905 > 56
+EXPECTED Out of bounds exception
+CLOB getSubString 5910 > 56
+EXPECTED Out of bounds exception
+CLOB getSubString 5910 > 56
+EXPECTED Out of bounds exception
+CLOB getSubString 204 > 56
+EXPECTED Out of bounds exception
+CLOB getSubString 68 > 56
+EXPECTED Out of bounds exception
+5(5) (len 50) test data: a string column inserted as an Ascii st
+5(6) (len 1) t
+6(0) (len 50) wwPosition-9907-behold-the-end-of-the-clob-is-nigh
+6(1) (len 150) I-am-hiding-here-at-position-5910-in-this-little-clobwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+6(2) (len 50) I-am-hiding-here-at-position-5910-in-this-little-c
+6(3) (len 50) This-is-position-204wwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+6(4) (len 50) wposition-69-end-of-the-first-l
+ine-we-are-now-on
+6(5) (len 50) Beginning-this-is-itwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+6(6) (len 1) B
+6(7) 
+wwwwwwPosition-9907-behold-the-end-of-the-clob-is-nighwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+CLOB getSubString 9905 > 0
+EXPECTED Out of bounds exception
+CLOB getSubString 5910 > 0
+EXPECTED Out of bounds exception
+CLOB getSubString 5910 > 0
+EXPECTED Out of bounds exception
+CLOB getSubString 204 > 0
+EXPECTED Out of bounds exception
+CLOB getSubString 68 > 0
+EXPECTED Out of bounds exception
+CLOB getSubString 1 > 0
+7(5) (len 50) 
+CLOB FAIL - NO ERROR ON getSubString POS TOO LARGE 1 > 0
+CLOB getSubString 1 > 0
+7(6) (len 1) 
+CLOB FAIL - NO ERROR ON getSubString POS TOO LARGE 1 > 0
+CLOB getSubString 9905 > 5000
+EXPECTED Out of bounds exception
+CLOB getSubString 5910 > 5000
+EXPECTED Out of bounds exception
+CLOB getSubString 5910 > 5000
+EXPECTED Out of bounds exception
+8(3) (len 50) wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+8(4) (len 50) wwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+wwwwwwwwwwwwwwwww
+8(5) (len 50) wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+8(6) (len 1) w
+8(7) 
+wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+9(0) (len 50) wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+9(1) (len 150) I-am-hiding-here-at-position-5910-in-this-humungus-clobwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+9(2) (len 50) I-am-hiding-here-at-position-5910-in-this-humungus
+9(3) (len 50) wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+9(4) (len 50) wwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+wwwwwwwwwwwwwwwww
+9(5) (len 50) wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+9(6) (len 1) w
+9(7) 
+wwHere-I-am-at-position-299003-near-the-end-of-the-clobwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+clobTest2 finished
+START: clobTest22
+Row 1 : Succeeded
+Row 2 : Succeeded
+Row 3 : Succeeded
+Row 4 : Succeeded
+Second time Succeeded
+Row 5 : Succeeded
+Second time Succeeded
+Row 6 : Succeeded
+Second time Succeeded
+clobTest22 finished
+START: clobTest3
+Found horse in row 1 starting from position 1 at position  NOTFOUND 
+Found ouch in row 1 starting from position 1 at position  NOTFOUND 
+Found 
+ in row 1 starting from position 1 at position  NOTFOUND 
+Found  in row 1 starting from position 1 at position 1
+Found Beginning in row 1 starting from position 1 at position  NOTFOUND 
+Found Beginning in row 1 starting from position 2 at position  NOTFOUND 
+Found position-69 in row 1 starting from position 1 at position  NOTFOUND 
+Found This-is-position-204 in row 1 starting from position 1 at position  NOTFOUND 
+Found I-am-hiding-here-at-position-5910 in row 1 starting from position 1 at position  NOTFOUND 
+Found I-am-hiding-here-at-position-5910 in row 1 starting from position 5910 at position  NOTFOUND 
+Found I-am-hiding-here-at-position-5910 in row 1 starting from position 5911 at position  NOTFOUND 
+Found Position-9907 in row 1 starting from position 1 at position  NOTFOUND 
+Found horse in row 2 starting from position 1 at position 16
+Found ouch in row 2 starting from position 1 at position  NOTFOUND 
+Found 
+ in row 2 starting from position 1 at position  NOTFOUND 
+Found  in row 2 starting from position 1 at position 1
+Found Beginning in row 2 starting from position 1 at position  NOTFOUND 
+Found Beginning in row 2 starting from position 2 at position  NOTFOUND 
+Found position-69 in row 2 starting from position 1 at position  NOTFOUND 
+Found This-is-position-204 in row 2 starting from position 1 at position  NOTFOUND 
+Found I-am-hiding-here-at-position-5910 in row 2 starting from position 1 at position  NOTFOUND 
+Found I-am-hiding-here-at-position-5910 in row 2 starting from position 5910 at position  NOTFOUND 
+Found I-am-hiding-here-at-position-5910 in row 2 starting from position 5911 at position  NOTFOUND 
+Found Position-9907 in row 2 starting from position 1 at position  NOTFOUND 
+Found horse in row 3 starting from position 1 at position  NOTFOUND 
+Found ouch in row 3 starting from position 1 at position 23
+Found 
+ in row 3 starting from position 1 at position  NOTFOUND 
+Found  in row 3 starting from position 1 at position 1
+Found Beginning in row 3 starting from position 1 at position  NOTFOUND 
+Found Beginning in row 3 starting from position 2 at position  NOTFOUND 
+Found position-69 in row 3 starting from position 1 at position  NOTFOUND 
+Found This-is-position-204 in row 3 starting from position 1 at position  NOTFOUND 
+Found I-am-hiding-here-at-position-5910 in row 3 starting from position 1 at position  NOTFOUND 
+Found I-am-hiding-here-at-position-5910 in row 3 starting from position 5910 at position  NOTFOUND 
+Found I-am-hiding-here-at-position-5910 in row 3 starting from position 5911 at position  NOTFOUND 
+Found Position-9907 in row 3 starting from position 1 at position  NOTFOUND 
+Found horse in row 4 starting from position 1 at position  NOTFOUND 
+Found ouch in row 4 starting from position 1 at position  NOTFOUND 
+Found 
+ in row 4 starting from position 1 at position 32
+Found  in row 4 starting from position 1 at position 1
+Found Beginning in row 4 starting from position 1 at position  NOTFOUND 
+Found Beginning in row 4 starting from position 2 at position  NOTFOUND 
+Found position-69 in row 4 starting from position 1 at position  NOTFOUND 
+Found This-is-position-204 in row 4 starting from position 1 at position  NOTFOUND 
+Found I-am-hiding-here-at-position-5910 in row 4 starting from position 1 at position  NOTFOUND 
+Found I-am-hiding-here-at-position-5910 in row 4 starting from position 5910 at position  NOTFOUND 
+Found I-am-hiding-here-at-position-5910 in row 4 starting from position 5911 at position  NOTFOUND 
+Found Position-9907 in row 4 starting from position 1 at position  NOTFOUND 
+Found horse in row 5 starting from position 1 at position  NOTFOUND 
+Found ouch in row 5 starting from position 1 at position  NOTFOUND 
+Found 
+ in row 5 starting from position 1 at position 56
+Found  in row 5 starting from position 1 at position 1
+Found Beginning in row 5 starting from position 1 at position  NOTFOUND 
+Found Beginning in row 5 starting from position 2 at position  NOTFOUND 
+Found position-69 in row 5 starting from position 1 at position  NOTFOUND 
+Found This-is-position-204 in row 5 starting from position 1 at position  NOTFOUND 
+Found I-am-hiding-here-at-position-5910 in row 5 starting from position 1 at position  NOTFOUND 
+Found I-am-hiding-here-at-position-5910 in row 5 starting from position 5910 at position  NOTFOUND 
+Found I-am-hiding-here-at-position-5910 in row 5 starting from position 5911 at position  NOTFOUND 
+Found Position-9907 in row 5 starting from position 1 at position  NOTFOUND 
+Found horse in row 6 starting from position 1 at position  NOTFOUND 
+Found ouch in row 6 starting from position 1 at position  NOTFOUND 
+Found 
+ in row 6 starting from position 1 at position 100
+Found  in row 6 starting from position 1 at position 1
+Found Beginning in row 6 starting from position 1 at position 1
+Found Beginning in row 6 starting from position 2 at position  NOTFOUND 
+Found position-69 in row 6 starting from position 1 at position 69
+Found This-is-position-204 in row 6 starting from position 1 at position 204
+Found I-am-hiding-here-at-position-5910 in row 6 starting from position 1 at position 5910
+Found I-am-hiding-here-at-position-5910 in row 6 starting from position 5910 at position 5910
+Found I-am-hiding-here-at-position-5910 in row 6 starting from position 5911 at position  NOTFOUND 
+Found Position-9907 in row 6 starting from position 1 at position 9907
+Found horse in row 7 starting from position 1 at position  NOTFOUND 
+Found ouch in row 7 starting from position 1 at position  NOTFOUND 
+Found 
+ in row 7 starting from position 1 at position  NOTFOUND 
+Found  in row 7 starting from position 1 at position 1
+Found Beginning in row 7 starting from position 1 at position  NOTFOUND 
+Found Beginning in row 7 starting from position 2 at position  NOTFOUND 
+Found position-69 in row 7 starting from position 1 at position  NOTFOUND 
+Found This-is-position-204 in row 7 starting from position 1 at position  NOTFOUND 
+Found I-am-hiding-here-at-position-5910 in row 7 starting from position 1 at position  NOTFOUND 
+Found I-am-hiding-here-at-position-5910 in row 7 starting from position 5910 at position  NOTFOUND 
+Found I-am-hiding-here-at-position-5910 in row 7 starting from position 5911 at position  NOTFOUND 
+Found Position-9907 in row 7 starting from position 1 at position  NOTFOUND 
+Found horse in row 8 starting from position 1 at position  NOTFOUND 
+Found ouch in row 8 starting from position 1 at position  NOTFOUND 
+Found 
+ in row 8 starting from position 1 at position 100
+Found  in row 8 starting from position 1 at position 1
+Found Beginning in row 8 starting from position 1 at position  NOTFOUND 
+Found Beginning in row 8 starting from position 2 at position  NOTFOUND 
+Found position-69 in row 8 starting from position 1 at position  NOTFOUND 
+Found This-is-position-204 in row 8 starting from position 1 at position  NOTFOUND 
+Found I-am-hiding-here-at-position-5910 in row 8 starting from position 1 at position  NOTFOUND 
+Found I-am-hiding-here-at-position-5910 in row 8 starting from position 5910 at position  NOTFOUND 
+Found I-am-hiding-here-at-position-5910 in row 8 starting from position 5911 at position  NOTFOUND 
+Found Position-9907 in row 8 starting from position 1 at position  NOTFOUND 
+clobTest3 finished
+START: clobTest32
+Succeeded: Found unicode string 0 at position 1,row 1
+Succeeded: Found unicode string 0 at position -1,row 1
+Succeeded: Found unicode string 1 at position 1,row 2
+Succeeded: Found unicode string 1 at position -1,row 2
+Succeeded: Found unicode string 2 at position 1,row 3
+Succeeded: Found unicode string 2 at position -1,row 3
+Succeeded: Found unicode string 0 at position 1,row 4
+Succeeded: Found unicode string 0 at position 5004,row 4
+Succeeded: Found unicode string 1 at position 1,row 5
+Succeeded: Found unicode string 1 at position 5004,row 5
+Succeeded: Found unicode string 2 at position 1,row 6
+Succeeded: Found unicode string 2 at position 5004,row 6
+clobTest32 finished
+START: clobTest4
+position(clob) NOT FOUND 1 searchStr horse
+position(clob) NOT FOUND 1 searchStr ouch
+position(clob) NOT FOUND 1 searchStr 
+position(clob) FOUND @ 1 with empty search clob in clob of length 0
+position(clob) NOT FOUND 1 searchStr Beginning
+position(clob) NOT FOUND 1 searchStr position-69
+position(clob) NOT FOUND 1 searchStr I-am-hiding-here-at-position-5910
+position(clob) NOT FOUND 1 searchStr Position-9907
+position(clob) NOT FOUND 1 searchStr test data: a string column inserted as an Ascii stream
+position(clob) NOT FOUND 1 searchStr >150chars
+position(clob) FOUND @ 1 with empty search clob in clob of length 0
+position(clob) NOT FOUND 1 searchStr >150chars
+searchClob row 13 skipped (too large)
+Found horse in row 2 at position 16
+position(clob) NOT FOUND 2 searchStr ouch
+position(clob) NOT FOUND 2 searchStr 
+position(clob) FOUND @ 1 with empty search clob in clob of length 65
+position(clob) NOT FOUND 2 searchStr Beginning
+position(clob) NOT FOUND 2 searchStr position-69
+position(clob) NOT FOUND 2 searchStr I-am-hiding-here-at-position-5910
+position(clob) NOT FOUND 2 searchStr Position-9907
+position(clob) NOT FOUND 2 searchStr test data: a string column inserted as an Ascii stream
+position(clob) NOT FOUND 2 searchStr >150chars
+position(clob) FOUND @ 1 with empty search clob in clob of length 65
+position(clob) NOT FOUND 2 searchStr >150chars
+searchClob row 13 skipped (too large)
+position(clob) NOT FOUND 3 searchStr horse
+Found ouch in row 3 at position 23
+position(clob) NOT FOUND 3 searchStr 
+position(clob) FOUND @ 1 with empty search clob in clob of length 26
+position(clob) NOT FOUND 3 searchStr Beginning
+position(clob) NOT FOUND 3 searchStr position-69
+position(clob) NOT FOUND 3 searchStr I-am-hiding-here-at-position-5910
+position(clob) NOT FOUND 3 searchStr Position-9907
+position(clob) NOT FOUND 3 searchStr test data: a string column inserted as an Ascii stream
+position(clob) NOT FOUND 3 searchStr >150chars
+position(clob) FOUND @ 1 with empty search clob in clob of length 26
+position(clob) NOT FOUND 3 searchStr >150chars
+searchClob row 13 skipped (too large)
+position(clob) NOT FOUND 4 searchStr horse
+position(clob) NOT FOUND 4 searchStr ouch
+Found 
+ in row 4 at position 32
+position(clob) FOUND @ 1 with empty search clob in clob of length 42
+position(clob) NOT FOUND 4 searchStr Beginning
+position(clob) NOT FOUND 4 searchStr position-69
+position(clob) NOT FOUND 4 searchStr I-am-hiding-here-at-position-5910
+position(clob) NOT FOUND 4 searchStr Position-9907
+position(clob) NOT FOUND 4 searchStr test data: a string column inserted as an Ascii stream
+position(clob) NOT FOUND 4 searchStr >150chars
+position(clob) FOUND @ 1 with empty search clob in clob of length 42
+position(clob) NOT FOUND 4 searchStr >150chars
+searchClob row 13 skipped (too large)
+position(clob) NOT FOUND 5 searchStr horse
+position(clob) NOT FOUND 5 searchStr ouch
+Found 
+ in row 5 at position 56
+position(clob) FOUND @ 1 with empty search clob in clob of length 56
+position(clob) NOT FOUND 5 searchStr Beginning
+position(clob) NOT FOUND 5 searchStr position-69
+position(clob) NOT FOUND 5 searchStr I-am-hiding-here-at-position-5910
+position(clob) NOT FOUND 5 searchStr Position-9907
+Found test data: a string column inserted as an Ascii stream
+ in row 5 at position 1
+position(clob) NOT FOUND 5 searchStr >150chars
+position(clob) FOUND @ 1 with empty search clob in clob of length 56
+position(clob) NOT FOUND 5 searchStr >150chars
+searchClob row 13 skipped (too large)
+position(clob) NOT FOUND 6 searchStr horse
+position(clob) NOT FOUND 6 searchStr ouch
+Found 
+ in row 6 at position 100
+position(clob) FOUND @ 1 with empty search clob in clob of length 10000
+Found Beginning in row 6 at position 1
+Found position-69 in row 6 at position 69
+Found I-am-hiding-here-at-position-5910 in row 6 at position 5910
+Found Position-9907 in row 6 at position 9907
+position(clob) NOT FOUND 6 searchStr test data: a string column inserted as an Ascii stream
+Found clob (row 10)  in row 6 at position 1
+position(clob) FOUND @ 1 with empty search clob in clob of length 10000
+Found clob (row 12)  in row 6 at position 301
+searchClob row 13 skipped (too large)
+position(clob) NOT FOUND 7 searchStr horse
+position(clob) NOT FOUND 7 searchStr ouch
+position(clob) NOT FOUND 7 searchStr 
+position(clob) FOUND @ 1 with empty search clob in clob of length 0
+position(clob) NOT FOUND 7 searchStr Beginning
+position(clob) NOT FOUND 7 searchStr position-69
+position(clob) NOT FOUND 7 searchStr I-am-hiding-here-at-position-5910
+position(clob) NOT FOUND 7 searchStr Position-9907
+position(clob) NOT FOUND 7 searchStr test data: a string column inserted as an Ascii stream
+position(clob) NOT FOUND 7 searchStr >150chars
+position(clob) FOUND @ 1 with empty search clob in clob of length 0
+position(clob) NOT FOUND 7 searchStr >150chars
+searchClob row 13 skipped (too large)
+position(clob) NOT FOUND 8 searchStr horse
+position(clob) NOT FOUND 8 searchStr ouch
+Found 
+ in row 8 at position 100
+position(clob) FOUND @ 1 with empty search clob in clob of length 5000
+position(clob) NOT FOUND 8 searchStr Beginning
+position(clob) NOT FOUND 8 searchStr position-69
+position(clob) NOT FOUND 8 searchStr I-am-hiding-here-at-position-5910
+position(clob) NOT FOUND 8 searchStr Position-9907
+position(clob) NOT FOUND 8 searchStr test data: a string column inserted as an Ascii stream
+position(clob) NOT FOUND 8 searchStr >150chars
+position(clob) FOUND @ 1 with empty search clob in clob of length 5000
+Found clob (row 12)  in row 8 at position 1
+searchClob row 13 skipped (too large)
+testCLOB_MAIN row 9 skipped (too large)
+clobTest4 finished
+START: clobTest42
+Succeeded: Found clob at position 1,row 0
+Succeeded: Found clob at position 1,row 1
+Succeeded: Found clob at position 1,row 2
+clobTest42 finished
+START: clobTest51
+clobTest51 finished
+START: clobTest52
+create table testInteger (a integer)
+insert into testInteger values('158')
+select a from testInteger
+getClob(1)
+52: SQLException
+EXPECTED SQL Exception: Invalid data conversion: Wrong result column type for requested conversion.
+START: clobTest53
+clobTest53 finished
+START: clobTest54
+EXPECTED SQLSTATE(22018): Invalid character string format for type INTEGER. : 
+end clobTest54
+START: clobTest6
+ negative tests for clob.getSubstring won't run  for network server  until 5243 is fixed
+START: clobTest7
+clobTest7 finished
+START: clobTest8
+small string pattern
+@1  position MATCH(129)
+@2  position MATCH(2074)
+@3  position MATCH(4595)
+@4  position MATCH(34584)
+@5  position MATCH(67918)
+@6  position MATCH(-1)
+@7  position MATCH(-1)
+@8  position MATCH(-1)
+@9  position MATCH(-1)
+@10  position MATCH(-1)
+small java.sql.Clob pattern
+@1  position MATCH(129)
+@2  position MATCH(2074)
+@3  position MATCH(4595)
+@4  position MATCH(34584)
+@5  position MATCH(67918)
+@6  position MATCH(-1)
+@7  position MATCH(-1)
+@8  position MATCH(-1)
+@9  position MATCH(-1)
+@10  position MATCH(-1)
+medium string pattern
+@1  position MATCH(11253)
+@2  position MATCH(12225)
+@3  position MATCH(13478)
+@4  position MATCH(43467)
+@5  position MATCH(76801)
+@6  position MATCH(-1)
+@7  position MATCH(-1)
+@8  position MATCH(-1)
+@9  position MATCH(-1)
+@10  position MATCH(-1)
+medium java.sql.Clob pattern
+@1  position MATCH(11253)
+@2  position MATCH(12225)
+@3  position MATCH(13478)
+@4  position MATCH(43467)
+@5  position MATCH(76801)
+@6  position MATCH(-1)
+@7  position MATCH(-1)
+@8  position MATCH(-1)
+@9  position MATCH(-1)
+@10  position MATCH(-1)
+long string pattern
+@1  position MATCH(287875)
+@2  position MATCH(288847)
+@3  position MATCH(290108)
+@4  position MATCH(305102)
+@5  position MATCH(321769)
+@6  position MATCH(-1)
+@7  position MATCH(-1)
+@8  position MATCH(-1)
+@9  position MATCH(-1)
+@10  position MATCH(-1)
+long java.sql.Clob pattern
+@1  position MATCH(287875)
+@2  position MATCH(288847)
+@3  position MATCH(290108)
+@4  position MATCH(305102)
+@5  position MATCH(321769)
+@6  position MATCH(-1)
+@7  position MATCH(-1)
+@8  position MATCH(-1)
+@9  position MATCH(-1)
+@10  position MATCH(-1)
+complete clobTest8
+START: clobTest91
+done row 0, length was 0
+done row 1, length was 65
+done row 2, length was 26
+done row 3, length was 42
+done row 4, length was 56
+done row 5, length was 10000
+done row 6, length was 0
+done row 7, length was 5000
+done row 8, length was 300000
+row 9 is null, skipped
+clobTest91 finished
+START: clobTest92
+clobTest92 finished
+START: clobTest93
+clobTest92 finished
+START: clobTest94
+shortClob length after commit is 26
+clobTest94 finished
+START: clobTest95
+shortClob length after closing connection is 26
+EXPECTED SQL Exception: Lob method called after connection was closed
+EXPECTED SQL Exception: Lob method called after connection was closed
+EXPECTED SQL Exception: Lob method called after connection was closed
+EXPECTED SQL Exception: Lob method called after connection was closed
+clobTest95 finished
+START: clobTest96
+clobTest96 finished
+START: prepareBlobTable
+===> inserting short.txt length = 56
+===> inserting littleclob.txt length = 10000
+===> inserting empty.txt length = 0
+===> inserting searchclob.txt length = 5000
+===> inserting aclob.txt length = 300000
+START: prepareSearchBlobTable
+===> inserting short.txt length = 56
+===> inserting littleclob.txt length = 10000
+===> inserting empty.txt length = 0
+===> inserting searchclob.txt length = 5000
+===> inserting aclob.txt length = 300000
+START: blobTest0
+blobTest0 finished
+START: blobTest2
+testing Blob.getBytes() with pos 9905 > 0
+Known JCC Bug 5914
+testing Blob.getBytes() with pos 5910 > 0
+Known JCC Bug 5914
+testing Blob.getBytes() with pos 5910 > 0
+Known JCC Bug 5914
+testing Blob.getBytes() with pos 204 > 0
+Known JCC Bug 5914
+testing Blob.getBytes() with pos 68 > 0
+Known JCC Bug 5914
+testing Blob.getBytes() with pos 1 > 0
+1(5) 
+FAIL testing Blob.getBytes() with pos 1 > 0
+testing Blob.getBytes() with pos 1 > 0
+1(6) 
+FAIL testing Blob.getBytes() with pos 1 > 0
+testing Blob.getBytes() with pos 9905 > 65
+Known JCC Bug 5914
+testing Blob.getBytes() with pos 5910 > 65
+Known JCC Bug 5914
+testing Blob.getBytes() with pos 5910 > 65
+Known JCC Bug 5914
+testing Blob.getBytes() with pos 204 > 65
+Known JCC Bug 5914
+testing Blob.getBytes() with pos 68 > 65
+Known JCC Bug 5914
+2(5) you can lead a horse to water but you can't form i
+2(6) y
+testing Blob.getBytes() with pos 9905 > 26
+Known JCC Bug 5914
+testing Blob.getBytes() with pos 5910 > 26
+Known JCC Bug 5914
+testing Blob.getBytes() with pos 5910 > 26
+Known JCC Bug 5914
+testing Blob.getBytes() with pos 204 > 26
+Known JCC Bug 5914
+testing Blob.getBytes() with pos 68 > 26
+Known JCC Bug 5914
+3(5) a stitch in time says ouch
+3(6) a
+testing Blob.getBytes() with pos 9905 > 42
+Known JCC Bug 5914
+testing Blob.getBytes() with pos 5910 > 42
+Known JCC Bug 5914
+testing Blob.getBytes() with pos 5910 > 42
+Known JCC Bug 5914
+testing Blob.getBytes() with pos 204 > 42
+Known JCC Bug 5914
+testing Blob.getBytes() with pos 68 > 42
+Known JCC Bug 5914
+4(5) here is a string with a return 
+ character
+4(6) h
+testing Blob.getBytes() with pos 9905 > 56
+Known JCC Bug 5914
+testing Blob.getBytes() with pos 5910 > 56
+Known JCC Bug 5914
+testing Blob.getBytes() with pos 5910 > 56
+Known JCC Bug 5914
+testing Blob.getBytes() with pos 204 > 56
+Known JCC Bug 5914
+testing Blob.getBytes() with pos 68 > 56
+Known JCC Bug 5914
+5(5) test data: a string column inserted as an Ascii st
+5(6) t
+6(0) wwPosition-9907-behold-the-end-of-the-clob-is-nigh
+6(1) I-am-hiding-here-at-position-5910-in-this-little-clobwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+6(2) I-am-hiding-here-at-position-5910-in-this-little-c
+6(3) This-is-position-204wwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+6(4) wposition-69-end-of-the-first-l
+ine-we-are-now-on
+6(5) Beginning-this-is-itwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+6(6) B
+6(7) 
+wwwwwwPosition-9907-behold-the-end-of-the-clob-is-nighwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+testing Blob.getBytes() with pos 9905 > 0
+Known JCC Bug 5914
+testing Blob.getBytes() with pos 5910 > 0
+Known JCC Bug 5914
+testing Blob.getBytes() with pos 5910 > 0
+Known JCC Bug 5914
+testing Blob.getBytes() with pos 204 > 0
+Known JCC Bug 5914
+testing Blob.getBytes() with pos 68 > 0
+Known JCC Bug 5914
+testing Blob.getBytes() with pos 1 > 0
+7(5) 
+FAIL testing Blob.getBytes() with pos 1 > 0
+testing Blob.getBytes() with pos 1 > 0
+7(6) 
+FAIL testing Blob.getBytes() with pos 1 > 0
+testing Blob.getBytes() with pos 9905 > 5000
+Known JCC Bug 5914
+testing Blob.getBytes() with pos 5910 > 5000
+Known JCC Bug 5914
+testing Blob.getBytes() with pos 5910 > 5000
+Known JCC Bug 5914
+8(3) wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+8(4) wwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+wwwwwwwwwwwwwwwww
+8(5) wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+8(6) w
+8(7) 
+wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+9(0) wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+9(1) I-am-hiding-here-at-position-5910-in-this-humungus-clobwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+9(2) I-am-hiding-here-at-position-5910-in-this-humungus
+9(3) wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+9(4) wwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+wwwwwwwwwwwwwwwww
+9(5) wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+9(6) w
+9(7) 
+wwHere-I-am-at-position-299003-near-the-end-of-the-clobwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+blobTest2 finished
+START: blobTest3
+Found horse in row 2 starting from position 1 at position 16
+Found ouch in row 3 starting from position 1 at position 23
+Found 
+ in row 4 starting from position 1 at position 32
+Found 
+ in row 5 starting from position 1 at position 56
+Found 
+ in row 6 starting from position 1 at position 100
+Found Beginning in row 6 starting from position 1 at position 1
+Found position-69 in row 6 starting from position 1 at position 69
+Found This-is-position-204 in row 6 starting from position 1 at position 204
+Found I-am-hiding-here-at-position-5910 in row 6 starting from position 1 at position 5910
+Found I-am-hiding-here-at-position-5910 in row 6 starting from position 5910 at position 5910
+Found Position-9907 in row 6 starting from position 1 at position 9907
+Found 
+ in row 8 starting from position 1 at position 100
+blobTest3 finished
+START: blobTest4
+searchBlob row 13 skipped (too large)
+Found horse in row 2 at position 16
+searchBlob row 13 skipped (too large)
+Found ouch in row 3 at position 23
+searchBlob row 13 skipped (too large)
+Found 
+ in row 4 at position 32
+searchBlob row 13 skipped (too large)
+Found 
+ in row 5 at position 56
+Found test data: a string column inserted as an Ascii stream
+ in row 5 at position 1
+searchBlob row 13 skipped (too large)
+Found 
+ in row 6 at position 100
+Found Beginning in row 6 at position 1
+Found position-69 in row 6 at position 69
+Found I-am-hiding-here-at-position-5910 in row 6 at position 5910
+Found Position-9907 in row 6 at position 9907
+Found blob (row 10)  in row 6 at position 1
+Found blob (row 12)  in row 6 at position 301
+searchBlob row 13 skipped (too large)
+searchBlob row 13 skipped (too large)
+Found 
+ in row 8 at position 100
+Found blob (row 12)  in row 8 at position 1
+searchBlob row 13 skipped (too large)
+testBlob row 9 skipped (too large)
+blobTest4 finished
+START: blobTest51
+blobTest51 finished
+START: blobTest52
+EXPECTED SQLSTATE(null): Invalid data conversion: Wrong result column type for requested conversion.
+START: blobTest53
+blobTest53 finished
+START: blobTest54
+EXPECTED SQLSTATE(XCL12): An attempt was made to put a data value of type 'byte[]' into a data value of type 'INTEGER'. : 
+START: blobTest6
+EXPECTED SQLSTATE(null): Invalid position 0 or length 5
+EXPECTED SQLSTATE(null): Invalid position 1 or length -76
+EXPECTED SQLSTATE(null): Search pattern cannot be null.
+EXPECTED SQLSTATE(null): Search pattern cannot be null.
+blobTest6 finished
+START: blobTest7
+blobTest7 finished
+START: blobTest91
+done row 0, length was 0
+done row 1, length was 65
+done row 2, length was 26
+done row 3, length was 42
+done row 4, length was 56
+done row 5, length was 10000
+done row 6, length was 0
+done row 7, length was 5000
+done row 8, length was 300000
+row 9 is null, skipped
+blobTest91 finished
+START: blobTest92
+Locks not held by Network Server for Blobs since they are materialized on client
+blobTest92 finished
+START: blobTest93
+blobTest93 finished
+START: blobTest94
+shortBlob length after commit is 26
+blobTest94 finished
+START: blobTest95
+EXPECTED SQLSTATE(null): Lob method called after connection was closed
+EXPECTED SQLSTATE(null): Lob method called after connection was closed
+EXPECTED SQLSTATE(null): Lob method called after connection was closed
+EXPECTED SQLSTATE(null): Lob method called after connection was closed
+EXPECTED SQLSTATE(null): Lob method called after connection was closed
+EXPECTED SQLSTATE(null): Lob method called after connection was closed
+blobTest95 finished
+START: blobTest96
+blobTest96 finished
+START: clobTestSelfDestructive
+length of clob chosen is 10000
+After update
+Row 1 value.substring(0,50) is jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
+10000 total bytes read
+clobTestSelfDestructive finished
+START: clobTestSelfDestructive2
+length of clob chosen is 10000
+After drop
+Expect to get an IOException, container has been closed
+10000 total bytes read
+clobTestSelfDestructive2 finished
+START: clobNegativeTest_Derby265
+-----
+EXPECTED SQLSTATE(XCL30): An IOException was thrown when reading a 'java.sql.String' from an InputStream.::SQLSTATE: XJ001Java exception: 'ERROR 40XD0: Container has been closed: java.io.IOException'. : 
+START: blobTestNegativeTest_Derby265
+-----
+EXPECTED SQLSTATE(XCL30): An IOException was thrown when reading a 'BLOB' from an InputStream.::SQLSTATE: XJ001Java exception: 'ERROR 40XD0: Container has been closed: java.io.IOException'. : 
+FINISHED TEST blobclob :-)
+Test blobclob finished

Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk16/checkSecMgr.out
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk16/checkSecMgr.out?rev=386169&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk16/checkSecMgr.out (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk16/checkSecMgr.out Wed Mar 15 13:31:53 2006
@@ -0,0 +1,4 @@
+testIllegalPropertySet
+execute the procedure setting illegal property
+Expected Security Exception
+ERROR 38000: The exception 'java.security.AccessControlException: access denied (java.util.PropertyPermission notAllowed write)' was thrown while evaluating an expression.::SQLSTATE: XJ001Java exception: 'access denied (java.util.PropertyPermission notAllowed write): java.security.AccessControlException'. : 

Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk16/csPrepStmt.out
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk16/csPrepStmt.out?rev=386169&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk16/csPrepStmt.out (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk16/csPrepStmt.out Wed Mar 15 13:31:53 2006
@@ -0,0 +1,69 @@
+csPrepStmt 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 5.0 6.0 7.0 88.88 99.100 column11string       column11vcstring column12lvcstring 0123456789abcdef10111213202020 0123456789abcdef10111213 0123456789abcdef10111213 xxxxxxFILTERED-TIMESTAMPxxxxx-04-12 11:44:30.0
+Timestamp match!
+got row:   1 2 3 4 5.0 6.0 7.0 88.88 99.100 column10string       column11vcstring column12lvcstring 0123456789abcdef10111213202020 0123456789abcdef10111213 0123456789abcdef10111213 xxxxxxFILTERED-TIMESTAMPxxxxx-04-12 11:44:30.0
+Timestamp match!
+got row:   0 0 0 0 0.0 0.0 0.0 null null null null null null null null null null xxxxxxFILTERED-TIMESTAMPxxxxx
+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 too many Columns
+insertTab ( bigtab,1001)
+SQLState: 42X14 message: 'C1001' is not a column in table or VTI 'APP.BIGTAB'. : 
+Expected Syntax error 
+insertTab ( bigtab,0)
+SQLState: 42X01 message: Syntax error: Encountered "<EOF>" at line 1, column 32. : 
+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. : 
+CLOB result.
+GOT ROW: yayorsomething
+BLOB result.
+GOT ROW: 003100300031003000310030003000300031003100300031
+csPrepStmt Test Ends

Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk16/forupdate.out
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk16/forupdate.out?rev=386169&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk16/forupdate.out (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk16/forupdate.out Wed Mar 15 13:31:53 2006
@@ -0,0 +1,520 @@
+ij> --
+----- tests for the for update/read only and updatable specifications parts
+----- of cursors and positioned statements.
+-----
+----- for positioned update/delete see positionedUpdate.jsql and
+----- positionedDelete.jsql.
+-----
+----- note that comments that begin '-- .' are test cases from the test plan
+----- assumed available in queries at time of initial writing:
+----- subqueries.  Additional tests will be needed once we have:
+----- union (all), order by, group by, having, aggregates, distinct, views ...
+----- setup some tables for use in the tests
+create table t1 ( i int, v varchar(10), d double precision, t time );
+0 rows inserted/updated/deleted
+ij> create table t2 ( s smallint, c char(10), r real, ts timestamp );
+0 rows inserted/updated/deleted
+ij> -- we need to turn autocommit off so that cursors aren't closed before
+----- the positioned statements against them.
+autocommit off;
+ij> -- . leave out some keywords (for, update, read, only)
+----- results: all of these should get syntax errors for missing/inappropriate keywords
+select i, v from t1 for;
+ERROR 42X01: Syntax error: Encountered "<EOF>" at line 1, column 23. : 
+ij> select i, v from t1 for read;
+ERROR 42X01: Syntax error: Encountered "<EOF>" at line 1, column 28. : 
+ij> select i, v from t1 for only;
+ERROR 42X01: Syntax error: Encountered "only" at line 1, column 25. : 
+ij> select i, v from t1 for update of;
+ERROR 42X01: Syntax error: Encountered "<EOF>" at line 1, column 33. : 
+ij> select i, v from t1 update;
+ERROR 42X01: Syntax error: Encountered "update" at line 1, column 21. : 
+ij> select i, v from t1 only;
+ERROR 42X01: Syntax error: Encountered "only" at line 1, column 21. : 
+ij> select i, v from t1 read;
+ERROR 42X01: Syntax error: Encountered "read" at line 1, column 21. : 
+ij> -- . for update no columns listed
+----- should not complain
+select i, v from t1 for update;
+I |V         
+-----
+ij> -- . implicit update test for read only spec
+----- this will end up being read only; we know because the delete is refused
+----- with a 'cursor not updatable' message
+get cursor c as 'select i, v from t1, t2';
+ij> delete from t1 where current of c;
+ERROR 42X23: Cursor SQL_CURSH200C1 is not updatable. : 
+ij> --  cursor with same name already exists
+get cursor c as 'select i, v from t1, t2';
+ERROR (no SQLState): Duplicate cursor names are not allowed.
+ij> close c;
+ij> -- . implicit update test for updatable spec
+----- this will end up being read only; we know because the delete is refused
+get cursor c1 as 'select i, v from t1 where i is not null';
+ij> next c1;
+No current row
+ij> -- the delete will get a 'cursor not updatable' execution error, but won't get
+----- a compile time error
+delete from t1 where current of c1;
+ERROR (no SQLState): Invalid cursor name "C1" in the Update/Delete statement.
+ij> close c1;
+ij> -- . read only for read only cursor spec
+----- we know because the delete is refused with a 'cursor not updatable' message
+get cursor c2 as 'select i, v from t1, t2 for read only';
+ij> delete from t1 where current of c2;
+ERROR 42X23: Cursor SQL_CURSH200C1 is not updatable. : 
+ij> close c2;
+ij> -- . read only for updatable cursor spec
+----- we know because the delete is refused with a 'cursor not updatable' message
+get cursor c3 as 'select i, v from t1 where i is not null for read only';
+ij> delete from t1 where current of c3;
+ERROR 42X23: Cursor SQL_CURSH200C1 is not updatable. : 
+ij> close c3;
+ij> -- . for update col not in select list
+----- this is allowed:
+select i, v from t1 for update of t;
+I |V         
+-----
+ij> -- . for update col in select list
+----- this is allowed:
+select i, v from t1 for update of i;
+I |V         
+-----
+ij> -- . for update col not in sel list or in table
+----- this gets a 'no such column' error
+select i, v from t1 for update of g;
+ERROR 42X04: Column 'G' is either not in any table in the FROM list or appears within a join specification and is outside the scope of the join specification or appears in a HAVING clause and is not in the GROUP BY list. If this is a CREATE or ALTER TABLE  statement then 'G' is not a column in the target table. : 
+ij> -- . for update col in select not in table (generated col)
+----- this gets a 'no such column' error
+select i+10 as iPlus10, v from t1 for update of iPlus10;
+ERROR 42X04: Column 'IPLUS10' is either not in any table in the FROM list or appears within a join specification and is outside the scope of the join specification or appears in a HAVING clause and is not in the GROUP BY list. If this is a CREATE or ALTER TABLE  statement then 'IPLUS10' is not a column in the target table. : 
+ij> -- . for update on read only spec, variety of reasons 
+----- these will get cursor not updatable errors:
+----- join is not updatable
+select i from t1, t2 for update;
+ERROR 42Y90: FOR UPDATE is not permitted in this type of statement.   : 
+ij> -- no subqueries are updatable
+select i from t1 where i=(select i from t1) for update;
+ERROR 42Y90: FOR UPDATE is not permitted in this type of statement.   : 
+ij> select i from t1 where i in (select i from t1) for update;
+ERROR 42Y90: FOR UPDATE is not permitted in this type of statement.   : 
+ij> select i from t1 where exists (select i from t1) for update;
+ERROR 42Y90: FOR UPDATE is not permitted in this type of statement.   : 
+ij> select i from t1 where exists (select s from t2) for update;
+ERROR 42Y90: FOR UPDATE is not permitted in this type of statement.   : 
+ij> select i from t1 where exists (select s from t2 where i=s) for update;
+ERROR 42Y90: FOR UPDATE is not permitted in this type of statement.   : 
+ij> -- note subquery in select expr is not updatable
+select (select s from t2) from t1 where exists (select i from t1) for update;
+ERROR 42Y90: FOR UPDATE is not permitted in this type of statement.   : 
+ij> select (select s from t2 where i=s) from t1 where exists (select i from t1) for update;
+ERROR 42Y90: FOR UPDATE is not permitted in this type of statement.   : 
+ij> select * from (select i, d from t1) a for update;
+ERROR 42Y90: FOR UPDATE is not permitted in this type of statement.   : 
+ij> select * from (select i+10, d from t1) a for update;
+ERROR 42Y90: FOR UPDATE is not permitted in this type of statement.   : 
+ij> -- constant table not updatable
+select * from (values (1, 2, 3)) a for update;
+ERROR 42Y90: FOR UPDATE is not permitted in this type of statement.   : 
+ij> values (1, 2, 3) for update;
+ERROR 42Y90: FOR UPDATE is not permitted in this type of statement.   : 
+ij> -- unions are not updatable
+select * from t1 union all select * from t1 for update;
+ERROR 42Y90: FOR UPDATE is not permitted in this type of statement.   : 
+ij> insert into t1 (i) values (1);
+1 row inserted/updated/deleted
+ij> -- . table with/without correlation name
+----- the idea is that the delete is against the table name, not the correlation name
+----- we've already seen the without correlation name case in previous tests
+get cursor c4 as 'select i from t1 s1 for update';
+ij> next c4;
+I          
+-----
+1          
+ij> -- this will get a target table mismatch error, it uses the correlation name:
+delete from s1 where current of c4;
+ERROR 42X28: Delete table 'S1' is not target of cursor 'SQL_CURSH200C1'. : 
+ij> -- this will compile and succeed, it uses the table name:
+delete from t1 where current of c4;
+1 row inserted/updated/deleted
+ij> close c4;
+ij> -- . list columns in order same/different from appearance in table
+----- the columns are 'found' regardless of their order.
+----- none of these should get errors:
+select i from t1 for update of i, v, d, t;
+I          
+-----
+ij> select i from t1 for update of v, i, t, d;
+I          
+-----
+ij> -- . list some, not all, columns in table, not contiguous
+----- the columns are 'found' regardless of their order or contiguity
+----- none of these should get errors:
+select i from t1 for update of i, d;
+I          
+-----
+ij> select i from t1 for update of t, v;
+I          
+-----
+ij> select i from t1 for update of d;
+I          
+-----
+ij> -- . use column as named in as clause of select v. as named in base table
+----- the column name must be the table's column name, not the select list name
+select i as z from t1 for update of z;
+ERROR 42X04: Column 'Z' is either not in any table in the FROM list or appears within a join specification and is outside the scope of the join specification or appears in a HAVING clause and is not in the GROUP BY list. If this is a CREATE or ALTER TABLE  statement then 'Z' is not a column in the target table. : 
+ij> -- . use column as named in as clause that matches underlying column name
+----- this uses the select list name which *is* an underlying column name
+----- note that the column updated is the underlying column, *not* the
+----- selected column (we can see this from the type error)
+get cursor c5 as 'select i as v from t1 for update of v';
+ij> -- i (renamed v in the select) is an integer; but v is still the
+----- varchar column, so this compiles (gets a no current row error):
+update t1 set v='hello' where current of c5;
+ERROR XCL08: Cursor 'SQL_CURSH200C1' is not on a row. : 
+ij> close c5;
+ij> -- . include duplicate column name
+----- expect an error:
+select i from t1 for update of i, v, v, t;
+I          
+-----
+ij> -- . try using qualified column name
+----- expect an error, only unqualified names are expected (SQL92 spec):
+select i from t1 for update of t1.v, t1.i, t1.d;
+ERROR 42X01: Syntax error: Encountered "." at line 1, column 34. : 
+ij> -- . for update when select list has expressions and correlation name in use,
+-----   and column is repeated
+----- this is allowed:
+select a.i+10, d, d from t1 a for update;
+1 |D |D                     
+-----
+ij> -- for update is used by applications to control locking behaviour
+----- without ever doing a positioned update. We test here to see
+----- that is some situations we can use an index even when no
+----- columns are specified in the for update case.
+create table t3 (i int not null constraint t3pk primary key, b char(10));
+0 rows inserted/updated/deleted
+ij> create index t3bi on t3(b);
+0 rows inserted/updated/deleted
+ij> insert into t3 values (1, 'hhhh'), (2, 'uuuu'), (3, 'yyyy'), (4, 'aaaa'), (5, 'jjjj'), (6, 'rrrr');
+6 rows inserted/updated/deleted
+ij> insert into t3 values (7, 'iiii'), (8, 'wwww'), (9, 'rrrr'), (10, 'cccc'), (11, 'hhhh'), (12, 'rrrr');
+6 rows inserted/updated/deleted
+ij> commit;
+ij> maximumdisplaywidth 5000;
+ij> call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+Statement executed.
+ij> select i, b from t3 FOR UPDATE;
+I |B         
+-----
+1 |hhhh      
+2 |uuuu      
+3 |yyyy      
+4 |aaaa      
+5 |jjjj      
+6 |rrrr      
+7 |iiii      
+8 |wwww      
+9 |rrrr      
+10 |cccc      
+11 |hhhh      
+12 |rrrr      
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
                                    
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select i, b from t3 FOR UPDATE
+Parse Time: 0
+Bind Time: 0
+Optimize Time: 0
+Generate Time: 0
+Compile Time: 0
+Execute Time: 0
+Begin Compilation Timestamp : null
+End Compilation Timestamp : null
+Begin Execution Timestamp : null
+End Execution Timestamp : null
+Statement Execution Plan Text: 
+Table Scan ResultSet for T3 at read committed isolation level using exclusive row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 12
+Rows filtered = 0
+Fetch Size = 1
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	next time in milliseconds/row = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=2
+	Number of pages visited=1
+	Number of rows qualified=12
+	Number of rows visited=12
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+None
+ij> commit;
+ij> prepare T3PK as 'select i, b from t3  where i = ? FOR UPDATE';
+ij> execute T3PK using 'values (7)';
+I |B         
+-----
+7 |iiii      
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
                                    
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select i, b from t3  where i = ? FOR UPDATE
+Parse Time: 0
+Bind Time: 0
+Optimize Time: 0
+Generate Time: 0
+Compile Time: 0
+Execute Time: 0
+Begin Compilation Timestamp : null
+End Compilation Timestamp : null
+Begin Execution Timestamp : null
+End Execution Timestamp : null
+Statement Execution Plan Text: 
+Index Row to Base Row ResultSet for T3:
+Number of opens = 1
+Rows seen = 1
+Columns accessed from heap = {0, 1}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for T3 using constraint T3PK at read committed isolation level using exclusive row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 1
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		next time in milliseconds/row = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=1
+		Number of rows qualified=1
+		Number of rows visited=1
+		Scan type=btree
+		Tree height=1
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		qualifiers:
+None
+ij> remove T3PK;
+ij> commit;
+ij> prepare T3PKFORCE as 'select i, b from t3 where i = ? FOR UPDATE';
+ij> prepare T3PK as 'select i, b from t3 where i < ? FOR UPDATE';
+ij> execute T3PK using 'values (7)';
+I |B         
+-----
+1 |hhhh      
+2 |uuuu      
+3 |yyyy      
+4 |aaaa      
+5 |jjjj      
+6 |rrrr      
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
                                    
+-----
+Statement Name: 
+	SQL_CURSH200C3
+Statement Text: 
+	select i, b from t3 where i < ? FOR UPDATE
+Parse Time: 0
+Bind Time: 0
+Optimize Time: 0
+Generate Time: 0
+Compile Time: 0
+Execute Time: 0
+Begin Compilation Timestamp : null
+End Compilation Timestamp : null
+Begin Execution Timestamp : null
+End Execution Timestamp : null
+Statement Execution Plan Text: 
+Index Row to Base Row ResultSet for T3:
+Number of opens = 1
+Rows seen = 6
+Columns accessed from heap = {0, 1}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for T3 using constraint T3PK at read committed isolation level using exclusive row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 6
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		next time in milliseconds/row = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=1
+		Number of rows qualified=6
+		Number of rows visited=7
+		Scan type=btree
+		Tree height=1
+		start position: 
+	None
+		stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		qualifiers:
+None
+ij> remove T3PK;
+ij> commit;
+ij> -- non-unique index
+prepare T3BI as 'select i, b from t3  where b = ? FOR UPDATE';
+ij> execute T3BI using 'values (''cccc'')';
+I |B         
+-----
+10 |cccc      
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
                                    
+-----
+Statement Name: 
+	SQL_CURSH200C3
+Statement Text: 
+	select i, b from t3  where b = ? FOR UPDATE
+Parse Time: 0
+Bind Time: 0
+Optimize Time: 0
+Generate Time: 0
+Compile Time: 0
+Execute Time: 0
+Begin Compilation Timestamp : null
+End Compilation Timestamp : null
+Begin Execution Timestamp : null
+End Execution Timestamp : null
+Statement Execution Plan Text: 
+Index Row to Base Row ResultSet for T3:
+Number of opens = 1
+Rows seen = 1
+Columns accessed from heap = {0, 1}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for T3 using index T3BI at read committed isolation level using exclusive row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 1
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		next time in milliseconds/row = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=1
+		Number of rows qualified=1
+		Number of rows visited=2
+		Scan type=btree
+		Tree height=1
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		qualifiers:
+None
+ij> remove T3BI;
+ij> commit;
+ij> prepare T3BIFORCE as 'select i, b from t3 where b = ? FOR UPDATE';
+ij> commit;
+ij> call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(0);
+Statement executed.
+ij> -- see what happens to a cursor that updates the primary key.
+----- first case - no update;
+get cursor T3C1 as 'select i,b from t3 where i = 4 for update';
+ij> next T3C1;
+I |B         
+-----
+4 |aaaa      
+ij> next T3C1;
+No current row
+ij> close T3C1;
+ij> commit;
+ij> -- second case - simple update;
+get cursor T3C1 as 'select i,b from t3 where i = 4 for update';
+ij> next T3C1;
+I |B         
+-----
+4 |aaaa      
+ij> update t3 set i = 13 where current of T3C1;
+1 row inserted/updated/deleted
+ij> next T3C1;
+No current row
+ij> close T3C1;
+ij> commit;
+ij> -- third (evil) case - update to change key value and insert a new value;
+get cursor T3C1 as 'select i,b from t3 where i = 6 for update';
+ij> next T3C1;
+I |B         
+-----
+6 |rrrr      
+ij> update t3 set i = 14 where current of T3C1;
+1 row inserted/updated/deleted
+ij> insert into t3 values (6, 'new!');
+1 row inserted/updated/deleted
+ij> -- We will not see the newly inserted row because we are now using index scan on the
+----- updateable cursor and we already get a row with that key from the unique index.
+----- We would get the new row if the index were not unique.  Beetle 3865.
+next T3C1;
+No current row
+ij> close T3C1;
+ij> commit;
+ij> -- reset autocomiit
+autocommit on;
+ij> -- drop the tables
+drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t3;
+0 rows inserted/updated/deleted
+ij> -- bug 5643
+----- JCC throws NPE when trying to execute a cursor after the resultset is closed
+autocommit off;
+ij> create table t1 (c1 int);
+0 rows inserted/updated/deleted
+ij> insert into t1 (c1) values (1),(2),(3);
+3 rows inserted/updated/deleted
+ij> get cursor curs1 as 'select * from t1 for update of c1';
+ij> prepare curs1 as 'update t1 set c1=c1 where current of curs1';
+ij> next curs1;
+C1         
+-----
+1          
+ij> close curs1;
+ij> execute curs1;
+ERROR (no SQLState): ResultSet for cursor CURS1 is closed.
+ij> -- clean up
+drop table t1;
+0 rows inserted/updated/deleted
+ij> 

Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk16/holdCursorIJ.out
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk16/holdCursorIJ.out?rev=386169&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk16/holdCursorIJ.out (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk16/holdCursorIJ.out Wed Mar 15 13:31:53 2006
@@ -0,0 +1,324 @@
+ij> -- create a table
+create table t1(c11 int, c12 int);
+0 rows inserted/updated/deleted
+ij> -- insert data into tables
+insert into t1 values(1,1);
+1 row inserted/updated/deleted
+ij> insert into t1 values(2,2);
+1 row inserted/updated/deleted
+ij> -- set autocommit off
+autocommit off;
+ij> -- first test - make sure that only cursors created with holdability true
+----- have open resultsets after commit
+----- declare 3 different kind of cursors one for each jdbc release so far
+get with nohold cursor jdk1 as 'SELECT * FROM t1';
+ij> get scroll insensitive with nohold cursor jdk2 as 'SELECT * FROM t1';
+ij> get with hold cursor jdk4 as 'SELECT * FROM t1';
+ij> -- do fetches from these cursors
+next jdk1;
+C11 |C12        
+-----
+1 |1          
+ij> next jdk2;
+C11 |C12        
+-----
+1 |1          
+ij> next jdk4;
+C11 |C12        
+-----
+1 |1          
+ij> --commit
+commit;
+ij> -- now try the fetch on cursors again after commit
+----- cursors jdk1 and jdk2 will give errors
+next jdk1;
+ERROR (no SQLState): Invalid operation: result set closed
+ij> next jdk2;
+ERROR (no SQLState): Invalid operation: result set closed
+ij> next jdk4;
+C11 |C12        
+-----
+2 |2          
+ij> -- end of resultset for jdk4, but try next again
+next jdk4;
+No current row
+ij> close jdk4;
+ij> next jdk4;
+IJ ERROR: Unable to establish cursor
+ij> -- clean up.
+close jdk1;
+ij> close jdk2;
+ij> -- second test - make sure that all the cursors (including holdability true)
+----- have their resultsets closed after rollback.
+----- declare the cursors again, this time, try with rollback
+get with nohold cursor jdk1 as 'SELECT * FROM t1';
+ij> get scroll insensitive with nohold cursor jdk2 as 'SELECT * FROM t1';
+ij> get with hold cursor jdk4 as 'SELECT * FROM t1';
+ij> -- do fetches from these cursors
+next jdk1;
+C11 |C12        
+-----
+1 |1          
+ij> next jdk2;
+C11 |C12        
+-----
+1 |1          
+ij> next jdk4;
+C11 |C12        
+-----
+1 |1          
+ij> --rollback
+rollback;
+ij> -- now try the fetch on cursors again after rollback
+----- all the cursors will give errors
+next jdk1;
+ERROR (no SQLState): Invalid operation: result set closed
+ij> next jdk2;
+ERROR (no SQLState): Invalid operation: result set closed
+ij> next jdk4;
+ERROR (no SQLState): Invalid operation: result set closed
+ij> -- clean up.
+close jdk1;
+ij> close jdk2;
+ij> close jdk4;
+ij> -- third test - Define a hold cursor on a table. Shouldn't be able to drop that
+----- table before & after commit. Have to close the cursor before table can be dropped.
+get with nohold cursor jdk1 as 'SELECT * FROM t1';
+ij> get with hold cursor jdk4 as 'SELECT * FROM t1';
+ij> next jdk1;
+C11 |C12        
+-----
+1 |1          
+ij> next jdk4;
+C11 |C12        
+-----
+1 |1          
+ij> -- wont' be able to drop table because of cursors jdk1 and jdk4
+----- in DerbyNetClient, cursor is closed on server and DROP TABLE succeeds
+drop table t1;
+ERROR X0X95: Operation 'DROP TABLE' cannot be performed on object 'T1' because there is an open ResultSet dependent on that object. : 
+ij> commit;
+ij> -- drop table still won't work because jdk4 is still open after commit
+----- in DerbyNetClient, the table is already dropped
+drop table t1;
+ERROR X0X95: Operation 'DROP TABLE' cannot be performed on object 'T1' because there is an open ResultSet dependent on that object. : 
+ij> -- close cursor jdk4 and try then deleting the table
+----- in DerbyNetClient, the table is already dropped
+close jdk4;
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- clean up.
+close jdk1;
+ij> -- recreate and populate the table for next test
+create table t1(c11 int, c12 int);
+0 rows inserted/updated/deleted
+ij> insert into t1 values(1,1);
+1 row inserted/updated/deleted
+ij> insert into t1 values(2,2);
+1 row inserted/updated/deleted
+ij> -- fourth test - try to change the isolation level while there are
+----- held cursors
+get with nohold cursor jdk1 as 'SELECT * FROM t1';
+ij> get with hold cursor jdk4 as 'SELECT * FROM t1';
+ij> next jdk1;
+C11 |C12        
+-----
+1 |1          
+ij> next jdk4;
+C11 |C12        
+-----
+1 |1          
+ij> -- try to change the isolation level. will give error because of jdk1 and jdk4
+----- no error in DerbyNetClient because cursor is closed on server
+set current isolation RR;
+ERROR X0X03: Invalid transaction state - held cursor requires same isolation level : 
+ij> commit;
+ij> -- attempt to change isolation level should give error because of jdk4 hold cursor
+----- no error in DerbyNetClient because cursor is closed on server
+set isolation = REPEATABLE READ;
+ERROR X0X03: Invalid transaction state - held cursor requires same isolation level : 
+ij> -- close jdk4 and then should be able to change isolation
+close jdk4;
+ij> set isolation to serializable;
+0 rows inserted/updated/deleted
+ij> -- clean up.
+close jdk1;
+ij> -- fifth test - try isolation level change alongwith changing the isolation
+----- level of just one statement
+get with hold cursor jdk4 as 'SELECT * FROM t1';
+ij> get with nohold cursor jdk1 as 'SELECT * FROM t1 WITH CS';
+ij> next jdk4;
+C11 |C12        
+-----
+1 |1          
+ij> next jdk1;
+C11 |C12        
+-----
+1 |1          
+ij> -- following should fail because of cursor jdk4
+----- no error in DerbyNetClient because cursor is closed on server
+set isolation RS;
+ERROR X0X03: Invalid transaction state - held cursor requires same isolation level : 
+ij> -- following should fail because of cursor jdk4
+----- no error in DerbyNetClient because cursor is closed on server
+set isolation UR;
+ERROR X0X03: Invalid transaction state - held cursor requires same isolation level : 
+ij> close jdk4;
+ij> -- should be able to change the isolation now
+set isolation READ UNCOMMITTED;
+0 rows inserted/updated/deleted
+ij> set isolation RS;
+0 rows inserted/updated/deleted
+ij> -- clean up.
+close jdk1;
+ij> -- sixth test - try positioned update with hold cursor
+get with hold cursor jdk4 as 'SELECT * FROM t1 FOR UPDATE';
+ij> -- following should give error because cursor is not positioned on any row
+update t1 set c12=12 where current of jdk4;
+ERROR XCL08: Cursor 'SQL_CURSH200C1' is not on a row. : 
+ij> select * from t1;
+C11 |C12        
+-----
+1 |1          
+2 |2          
+ij> next jdk4;
+C11 |C12        
+-----
+1 |1          
+ij> update t1 set c12=12 where current of jdk4;
+1 row inserted/updated/deleted
+ij> select * from t1;
+C11 |C12        
+-----
+1 |12         
+2 |2          
+ij> commit;
+ij> -- after commit, the next transaction should do a fetch again before doing
+----- any positioned update
+update t1 set c12=123 where current of jdk4;
+ERROR 24000: Invalid cursor state - no current row. : 
+ij> select * from t1;
+C11 |C12        
+-----
+1 |12         
+2 |2          
+ij> next jdk4;
+C11 |C12        
+-----
+2 |2          
+ij> update t1 set c12=23 where current of jdk4;
+1 row inserted/updated/deleted
+ij> select * from t1;
+C11 |C12        
+-----
+1 |12         
+2 |23         
+ij> close jdk4;
+ij> update t1 set c12=234 where current of jdk4;
+ERROR (no SQLState): Invalid cursor name "JDK4" in the Update/Delete statement.
+ij> select * from t1;
+C11 |C12        
+-----
+1 |12         
+2 |23         
+ij> -- seventh test - try positioned delete with hold cursor
+get with hold cursor jdk4 as 'SELECT * FROM t1 FOR UPDATE';
+ij> -- following should give error because cursor is not positioned on any row
+delete from t1 where current of jdk4;
+ERROR XCL08: Cursor 'SQL_CURSH200C1' is not on a row. : 
+ij> select * from t1;
+C11 |C12        
+-----
+1 |12         
+2 |23         
+ij> next jdk4;
+C11 |C12        
+-----
+1 |12         
+ij> delete from  t1 where current of jdk4;
+1 row inserted/updated/deleted
+ij> select * from t1;
+C11 |C12        
+-----
+2 |23         
+ij> commit;
+ij> -- after commit, the next transaction should do a fetch again before doing
+----- any positioned delete
+delete from t1 where current of jdk4;
+ERROR 24000: Invalid cursor state - no current row. : 
+ij> select * from t1;
+C11 |C12        
+-----
+2 |23         
+ij> next jdk4;
+C11 |C12        
+-----
+2 |23         
+ij> delete from t1 where current of jdk4;
+1 row inserted/updated/deleted
+ij> select * from t1;
+C11 |C12        
+-----
+ij> close jdk4;
+ij> delete from t1 where current of jdk4;
+ERROR (no SQLState): Invalid cursor name "JDK4" in the Update/Delete statement.
+ij> select * from t1;
+C11 |C12        
+-----
+ij> -- populate the table for next test
+insert into t1 values(1,1);
+1 row inserted/updated/deleted
+ij> insert into t1 values(2,2);
+1 row inserted/updated/deleted
+ij> -- eighth test - scrollable cursors
+get scroll insensitive with hold cursor jdk4 as 'SELECT * FROM t1';
+ij> commit;
+ij> previous jdk4;
+No current row
+ij> after last jdk4;
+No current row
+ij> before first jdk4;
+No current row
+ij> first jdk4;
+C11 |C12        
+-----
+1 |1          
+ij> last jdk4;
+C11 |C12        
+-----
+2 |2          
+ij> next jdk4;
+No current row
+ij> previous jdk4;
+C11 |C12        
+-----
+2 |2          
+ij> next jdk4;
+No current row
+ij> close jdk4;
+ij> first jdk4;
+IJ ERROR: Unable to establish cursor
+ij> -- ninth test - close the updateable holdable cursor after commit
+----- we get npe
+get with hold cursor jdk4 as 'SELECT * FROM T1 FOR UPDATE';
+ij> next jdk4;
+C11 |C12        
+-----
+1 |1          
+ij> commit;
+ij> close jdk4;
+ij> -- tenth test - bug 4515 - have a more useful message
+----- update where current of fails in autocommit=true, held open cursor
+autocommit on;
+ij> get with hold cursor scrollCursor as 'select * from t1 for update of c12';
+ij> next scrollCursor;
+C11 |C12        
+-----
+1 |1          
+ij> update t1 set c12=c12+1 where current of scrollCursor;
+1 row inserted/updated/deleted
+ij> -- clean up.
+close scrollCursor;
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij>